--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / components / map / MapPage.vue
Displaying Raw • Download
meshchatx/src/frontend/components/map/MapPage.vue fda9187e95d8b9cc8373c1de23cefce6928c241d (fda9187e) Text, 139.69 KB
Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col h-full w-full bg-white dark:bg-zinc-950 overflow-hidden"Tb4b4b4>
T8b949e<!-- header -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex items-center px-4 py-2 border-b border-gray-200 dark:border-zinc-800 bg-white/80 dark:bg-zinc-900/80 backdrop-blur z-10 relative"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-2"Tb4b4b4>
Tb4b4b4<Tff7b72v-icon Te6edf3iconTff7b72=Ta5d6ff"mdi-map" Te6edf3classTff7b72=Ta5d6ff"text-blue-500 dark:text-blue-400" Te6edf3sizeTff7b72=Ta5d6ff"24"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Tb4b4b4<Tff7b72h1 Te6edf3classTff7b72=Ta5d6ff"text-xl font-black text-gray-900 dark:text-white"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.title"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h1Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"ml-auto flex items-center space-x-2"Tb4b4b4>
T8b949e<!-- export tool toggle -->
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3offlineEnabledTa5d6ff"
Te6edf3refTff7b72=Ta5d6ff"exportButton"
Te6edf3classTff7b72=Ta5d6ff"p-2 rounded-lg transition-colors"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3isExportMode
Tff7b72? Ta5d6ff'bg-blue-500 text-white shadow-sm'
Tff7b72: Ta5d6ff'text-gray-500 hover:bg-gray-100 dark:hover:bg-zinc-800'
Ta5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.export_area'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleExportModeTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"crop-free" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
T8b949e<!-- offline/online toggle -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center bg-gray-100 dark:bg-zinc-800 rounded-lg p-1"Tb4b4b4>
Tb4b4b4<Tff7b72button
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Tff7b72!Te6edf3offlineEnabled
Tff7b72? Ta5d6ff'bg-white dark:bg-zinc-700 shadow-sm text-blue-600 dark:text-blue-400'
Tff7b72: Ta5d6ff'text-gray-500 dark:text-zinc-400'
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-3 py-1 text-sm font-medium rounded-md transition-all"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleOfflineTb4b4b4(Tff7b72falseTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.online_mode"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3offlineEnabled
Tff7b72? Ta5d6ff'bg-white dark:bg-zinc-700 shadow-sm text-blue-600 dark:text-blue-400'
Tff7b72: Ta5d6ff'text-gray-500 dark:text-zinc-400'
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-3 py-1 text-sm font-medium rounded-md transition-all"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3hasOfflineMapTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleOfflineTb4b4b4(Tff7b72trueTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.offline_mode"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- upload button (desktop only) -->
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"hidden sm:flex items-center space-x-1 px-3 py-1.5 bg-blue-500 hover:bg-blue-600 text-white rounded-lg shadow-sm transition-colors text-sm font-medium"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$refsTb4b4b4.Te6edf3fileInputTb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"upload" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.upload_mbtiles"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72input Te6edf3refTff7b72=Ta5d6ff"fileInput" Te6edf3typeTff7b72=Ta5d6ff"file" Te6edf3acceptTff7b72=Ta5d6ff".mbtiles" Te6edf3classTff7b72=Ta5d6ff"hidden" Tb4b4b4@Te6edf3changeTff7b72=Ta5d6ff"Te6edf3onFileSelectedTa5d6ff" Tb4b4b4/Tb4b4b4>
T8b949e<!-- settings button -->
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-2 text-gray-500 hover:bg-gray-100 dark:hover:bg-zinc-800 rounded-full transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3isSettingsOpen Tff7b72= Tff7b72!Te6edf3isSettingsOpenTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"cog" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- map container -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative flex-1 min-h-0"Tb4b4b4>
T8b949e<!-- drawing toolbar -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"absolute top-14 left-1/2 -translate-x-1/2 sm:top-2 z-20 flex flex-col gap-2 transform-gpu w-max max-w-[98vw]"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-white dark:bg-zinc-900 rounded-2xl shadow-2xl overflow-hidden flex flex-row p-0.5 sm:p-1 gap-0 sm:gap-0.5 border-0"
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3tool Tff7b72in Te6edf3drawingToolsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3toolTb4b4b4.Te6edf3typeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-1.5 sm:p-2 rounded-xl transition-all hover:scale-110 active:scale-90"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Tb4b4b4(Te6edf3drawType Tff7b72=== Te6edf3toolTb4b4b4.Te6edf3type Tff7b72&& Tff7b72!Te6edf3isMeasuringTb4b4b4) Tff7b72|| Tb4b4b4(Te6edf3toolTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff'Export' Tff7b72&& Te6edf3isExportModeTb4b4b4)
Tff7b72? Ta5d6ff'bg-blue-500 text-white shadow-lg shadow-blue-500/30'
Tff7b72: Ta5d6ff'hover:bg-gray-100 dark:hover:bg-zinc-800 text-gray-600 dark:text-gray-400'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3toolTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff'Export' Tff7b72? Ta5d6ff'MBTiles exporter' Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff`Ta5d6ffmap.tool_Tffd700${Te6edf3toolTb4b4b4.Te6edf3typeTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toolTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff'Export' Tff7b72? Te6edf3toggleExportModeTb4b4b4(Tb4b4b4) Tff7b72: Te6edf3toggleDrawTb4b4b4(Te6edf3toolTb4b4b4.Te6edf3typeTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72v-icon Tb4b4b4:Te6edf3iconTff7b72=Ta5d6ff"Ta5d6ff'mdi-' Tff7b72+ Te6edf3toolTb4b4b4.Te6edf3iconTa5d6ff" Te6edf3sizeTff7b72=Ta5d6ff"18" Te6edf3classTff7b72=Ta5d6ff"sm:!size-5"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-px h-6 bg-gray-200 dark:bg-zinc-800 my-auto mx-0.5 sm:mx-1"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-1.5 sm:p-2 rounded-xl transition-all hover:scale-110 active:scale-90"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Te6edf3isMeasuring
Tff7b72? Ta5d6ff'bg-indigo-500 text-white shadow-lg shadow-indigo-500/30'
Tff7b72: Ta5d6ff'hover:bg-gray-100 dark:hover:bg-zinc-800 text-gray-600 dark:text-gray-400'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.tool_measure'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleMeasureTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72v-icon Te6edf3iconTff7b72=Ta5d6ff"mdi-ruler" Te6edf3sizeTff7b72=Ta5d6ff"18" Te6edf3classTff7b72=Ta5d6ff"sm:!size-5"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-1.5 sm:p-2 rounded-xl hover:bg-red-50 dark:hover:bg-red-900/20 text-red-500 transition-all hover:scale-110 active:scale-90"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.tool_clear'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3clearDrawingsTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72v-icon Te6edf3iconTff7b72=Ta5d6ff"mdi-trash-can-outline" Te6edf3sizeTff7b72=Ta5d6ff"18" Te6edf3classTff7b72=Ta5d6ff"sm:!size-5"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedFeatureTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-1.5 sm:p-2 rounded-xl bg-blue-100 dark:bg-blue-900/30 text-blue-600 transition-all hover:scale-110 active:scale-90"
Te6edf3titleTff7b72=Ta5d6ff"Edit note"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3startEditingNoteTb4b4b4(Te6edf3selectedFeatureTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72v-icon Te6edf3iconTff7b72=Ta5d6ff"mdi-note-edit-outline" Te6edf3sizeTff7b72=Ta5d6ff"18" Te6edf3classTff7b72=Ta5d6ff"sm:!size-5"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedFeature Tff7b72&& Tff7b72!Te6edf3selectedFeatureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff'telemetry'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-1.5 sm:p-2 rounded-xl bg-red-100 dark:bg-red-900/30 text-red-600 transition-all hover:scale-110 active:scale-90 animate-pulse"
Te6edf3titleTff7b72=Ta5d6ff"Delete selected item"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3deleteSelectedFeatureTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72v-icon Te6edf3iconTff7b72=Ta5d6ff"mdi-selection-remove" Te6edf3sizeTff7b72=Ta5d6ff"18" Te6edf3classTff7b72=Ta5d6ff"sm:!size-5"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-px h-6 bg-gray-200 dark:bg-zinc-800 my-auto mx-0.5 sm:mx-1"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-1.5 sm:p-2 rounded-xl hover:bg-gray-100 dark:hover:bg-zinc-800 text-gray-600 dark:text-gray-400 transition-all hover:scale-110 active:scale-90"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.save_drawing'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showSaveDrawingModal Tff7b72= Tff7b72trueTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72v-icon Te6edf3iconTff7b72=Ta5d6ff"mdi-content-save-outline" Te6edf3sizeTff7b72=Ta5d6ff"18" Te6edf3classTff7b72=Ta5d6ff"sm:!size-5"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-1.5 sm:p-2 rounded-xl hover:bg-gray-100 dark:hover:bg-zinc-800 text-gray-600 dark:text-gray-400 transition-all hover:scale-110 active:scale-90"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.load_drawing'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openLoadDrawingModalTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72v-icon Te6edf3iconTff7b72=Ta5d6ff"mdi-folder-open-outline" Te6edf3sizeTff7b72=Ta5d6ff"18" Te6edf3classTff7b72=Ta5d6ff"sm:!size-5"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-px h-6 bg-gray-200 dark:bg-zinc-800 my-auto mx-0.5 sm:mx-1"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-1.5 sm:p-2 rounded-xl hover:bg-blue-50 dark:hover:bg-blue-900/20 text-blue-500 transition-all hover:scale-110 active:scale-90"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.go_to_my_location'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3goToMyLocationTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72v-icon Te6edf3iconTff7b72=Ta5d6ff"mdi-crosshairs-gps" Te6edf3sizeTff7b72=Ta5d6ff"18" Te6edf3classTff7b72=Ta5d6ff"sm:!size-5"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- search bar -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3offlineEnabledTa5d6ff"
Te6edf3refTff7b72=Ta5d6ff"searchContainer"
Te6edf3classTff7b72=Ta5d6ff"absolute top-2 left-4 right-4 sm:left-auto sm:right-4 sm:w-80 z-30"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center bg-white dark:bg-zinc-900 rounded-xl shadow-2xl border-0 ring-0"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3searchQueryTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"flex-1 px-4 py-2.5 bg-transparent text-gray-900 dark:text-zinc-100 placeholder-gray-400 focus:outline-none focus:ring-0 border-0 text-sm"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.search_placeholder'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3inputTff7b72=Ta5d6ff"Te6edf3onSearchInputTa5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3enterTff7b72=Ta5d6ff"Te6edf3performSearchTa5d6ff"
Tb4b4b4@Te6edf3focusTff7b72=Ta5d6ff"Te6edf3isSearchFocused Tff7b72= Tff7b72trueTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3searchQueryTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-2 text-gray-400 hover:text-gray-600 dark:hover:text-zinc-300 transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3clearSearchTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72v-icon Te6edf3iconTff7b72=Ta5d6ff"mdi-close" Te6edf3sizeTff7b72=Ta5d6ff"18"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-2 mr-1 text-blue-500 hover:text-blue-600 disabled:text-gray-300 transition-colors"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3searchQuery Tff7b72|| Te6edf3isSearchingTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3performSearchTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72v-icon
Tb4b4b4:Te6edf3iconTff7b72=Ta5d6ff"Te6edf3isSearching Tff7b72? Ta5d6ff'mdi-loading' Tff7b72: Ta5d6ff'mdi-magnify'Ta5d6ff"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'animate-spin'Tff7b72: Te6edf3isSearching Tb4b4b4}Ta5d6ff"
Te6edf3sizeTff7b72=Ta5d6ff"20"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- search results dropdown -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isSearchFocused Tff7b72&& Tb4b4b4(Te6edf3searchResultsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0 Tff7b72|| Te6edf3searchErrorTb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute top-full left-0 right-0 mt-2 bg-white dark:bg-zinc-900 rounded-xl shadow-2xl border-0 overflow-y-auto z-40 max-h-64"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3searchErrorTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"p-4 text-sm text-red-500 flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72v-icon Te6edf3iconTff7b72=Ta5d6ff"mdi-alert-circle" Te6edf3sizeTff7b72=Ta5d6ff"16"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Tff7b72{{ Te6edf3searchError Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Tb4b4b4(Te6edf3resultTb4b4b4, Te6edf3indexTb4b4b4) Tff7b72in Te6edf3searchResultsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3indexTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full px-4 py-3 text-left hover:bg-gray-50 dark:hover:bg-zinc-800/50 border-b border-gray-100/50 dark:border-zinc-800/50 last:border-b-0 transition-all"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3selectSearchResultTb4b4b4(Te6edf3resultTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-zinc-100 text-sm"Tb4b4b4>
Tff7b72{{ Te6edf3resultTb4b4b4.Te6edf3display_name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-400 dark:text-zinc-500 mt-0.5 font-bold uppercase tracking-wider"
Tb4b4b4>
Tff7b72{{ Te6edf3resultTb4b4b4.Te6edf3type Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3refTff7b72=Ta5d6ff"mapContainer" Te6edf3classTff7b72=Ta5d6ff"absolute inset-0" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'cursor-crosshair'Tff7b72: Te6edf3isExportMode Tb4b4b4}Ta5d6ff"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- note hover tooltip -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"
Te6edf3hoveredFeature Tff7b72&&
Tb4b4b4(Te6edf3hoveredFeatureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff'note'Tb4b4b4) Tff7b72||
Tb4b4b4(Te6edf3hoveredFeatureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff'telemetry'Tb4b4b4) Tff7b72&& Te6edf3hoveredFeatureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff'telemetry'Tb4b4b4)Tb4b4b4.Te6edf3noteTb4b4b4)Tb4b4b4) Tff7b72&&
Tff7b72!Te6edf3editingFeature
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute pointer-events-none z-50 bg-white/90 dark:bg-zinc-900/90 backdrop-blur border border-gray-200 dark:border-zinc-700 rounded-lg shadow-xl p-2 text-sm text-gray-900 dark:text-zinc-100 max-w-xs transform -translate-x-1/2 -translate-y-full mb-4"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Tb4b4b4{
Te6edf3leftTff7b72: Te6edf3mapTb4b4b4.Te6edf3getPixelFromCoordinateTb4b4b4(Te6edf3hoveredFeatureTb4b4b4.Te6edf3getGeometryTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getCoordinatesTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4] Tff7b72+ Ta5d6ff'px'Tb4b4b4,
Te6edf3topTff7b72: Te6edf3mapTb4b4b4.Te6edf3getPixelFromCoordinateTb4b4b4(Te6edf3hoveredFeatureTb4b4b4.Te6edf3getGeometryTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getCoordinatesTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4] Tff7b72+ Ta5d6ff'px'Tb4b4b4,
Tb4b4b4}Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-bold flex items-center gap-1 mb-1 text-amber-500"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"note-text" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{
Te6edf3hoveredFeatureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"telemetry"Tb4b4b4) Tff7b72? Te6edf3hoveredFeatureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"peer"Tb4b4b4)Tff7b72?Tb4b4b4.Te6edf3display_name Tff7b72|| Ta5d6ff"Peer" Tff7b72: Ta5d6ff"Note"
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"whitespace-pre-wrap break-words"Tb4b4b4>
Tff7b72{{ Te6edf3hoveredFeatureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"note"Tb4b4b4) Tff7b72|| Te6edf3hoveredFeatureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"telemetry"Tb4b4b4)Tff7b72?Tb4b4b4.Te6edf3note Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- inline note editor (overlay) -->
Tb4b4b4<Tff7b72div Te6edf3refTff7b72=Ta5d6ff"noteOverlayElement" Te6edf3classTff7b72=Ta5d6ff"absolute z-40"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3editingFeature Tff7b72&& Tff7b72!Te6edf3isMobileScreenTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-white dark:bg-zinc-900 rounded-xl shadow-2xl border border-gray-200 dark:border-zinc-700 p-4 w-64 transform -translate-x-1/2 -translate-y-full mb-6"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold text-gray-900 dark:text-white flex items-center gap-1"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"note-edit" Te6edf3classTff7b72=Ta5d6ff"size-4 text-amber-500" Tb4b4b4/Tb4b4b4>
Edit Note
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"text-gray-400 hover:text-gray-600 dark:hover:text-zinc-300"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3closeNoteEditorTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72textarea
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3noteTextTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full h-24 p-2 text-sm bg-gray-50 dark:bg-zinc-800 border border-gray-200 dark:border-zinc-700 rounded-lg focus:ring-2 focus:ring-amber-500 focus:border-transparent outline-none resize-none text-gray-900 dark:text-zinc-100"
Te6edf3placeholderTff7b72=Ta5d6ff"Type your note here..."
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72textareaTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between mt-3"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"px-3 py-1.5 text-xs font-semibold text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20 rounded-lg transition-colors flex items-center gap-1"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3deleteNoteTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"trash-can-outline" Te6edf3classTff7b72=Ta5d6ff"size-3.5" Tb4b4b4/Tb4b4b4>
Delete
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"px-3 py-1.5 text-xs font-semibold bg-amber-500 text-white hover:bg-amber-600 rounded-lg shadow-sm transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3saveNoteTa5d6ff"
Tb4b4b4>
Save
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- context menu -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showContextMenuTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed z-[120] bg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 rounded-xl shadow-2xl overflow-hidden text-sm text-gray-900 dark:text-zinc-100"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3leftTff7b72: Te6edf3contextMenuPosTb4b4b4.Te6edf3x Tff7b72+ Ta5d6ff'px'Tb4b4b4, Te6edf3topTff7b72: Te6edf3contextMenuPosTb4b4b4.Te6edf3y Tff7b72+ Ta5d6ff'px' Tb4b4b4}Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"px-3 py-2 font-bold border-b border-gray-100 dark:border-zinc-800"Tb4b4b4>
Tff7b72{{ Te6edf3contextMenuFeature Tff7b72? Ta5d6ff"Feature actions" Tff7b72: Ta5d6ff"Map actions" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3contextMenuFeatureTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 px-3 py-2 hover:bg-gray-100 dark:hover:bg-zinc-800 text-left"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3contextSelectFeatureTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"cursor-default" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Select / MoveTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3contextMenuFeatureTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 px-3 py-2 hover:bg-gray-100 dark:hover:bg-zinc-800 text-left"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3contextAddNoteTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"note-edit" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Add / Edit NoteTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3contextMenuFeature Tff7b72&& Tff7b72!Te6edf3contextMenuFeatureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff'telemetry'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 px-3 py-2 hover:bg-red-50 dark:hover:bg-red-900/20 text-left text-red-600"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3contextDeleteFeatureTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"delete" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>DeleteTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 px-3 py-2 hover:bg-gray-100 dark:hover:bg-zinc-800 text-left"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3contextCopyCoordsTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"crosshairs-gps" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Copy coordsTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3contextMenuFeatureTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 px-3 py-2 hover:bg-gray-100 dark:hover:bg-zinc-800 text-left"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3contextClearMapTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"delete-sweep" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Clear drawingsTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- loading skeleton for map -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isMapLoadedTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"absolute inset-0 z-0 bg-slate-100 dark:bg-zinc-900 animate-pulse"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-4 grid-rows-4 h-full w-full gap-1 p-1 opacity-20"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3i Tff7b72in T79c0ff16Ta5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3iTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"bg-slate-300 dark:bg-zinc-700 rounded-lg"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- telemetry marker overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedMarkerTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute bottom-4 left-4 right-4 sm:left-4 sm:right-auto sm:w-80 z-20 bg-white dark:bg-zinc-900 rounded-xl shadow-2xl border border-gray-200 dark:border-zinc-800 overflow-hidden text-gray-900 dark:text-zinc-100"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-4 border-b border-gray-200 dark:border-zinc-800 flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"size-8 rounded-full flex items-center justify-center border-2"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Tb4b4b4{
Te6edf3colorTff7b72: Te6edf3selectedMarkerTb4b4b4.Te6edf3peerTff7b72?Tb4b4b4.Te6edf3lxmf_user_iconTff7b72?Tb4b4b4.Te6edf3foreground_colour Tff7b72|| Ta5d6ff'#3b82f6'Tb4b4b4,
Te6edf3borderColorTff7b72: Te6edf3selectedMarkerTb4b4b4.Te6edf3peerTff7b72?Tb4b4b4.Te6edf3lxmf_user_iconTff7b72?Tb4b4b4.Te6edf3foreground_colour Tff7b72|| Ta5d6ff'#3b82f6'Tb4b4b4,
Te6edf3backgroundColorTff7b72: Te6edf3selectedMarkerTb4b4b4.Te6edf3peerTff7b72?Tb4b4b4.Te6edf3lxmf_user_iconTff7b72?Tb4b4b4.Te6edf3background_colour Tff7b72|| Ta5d6ff'#ffffff'Tb4b4b4,
Tb4b4b4}Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72v-icon
Tb4b4b4:Te6edf3iconTff7b72=Ta5d6ff"Ta5d6ff'mdi-' Tff7b72+ Tb4b4b4(Te6edf3selectedMarkerTb4b4b4.Te6edf3peerTff7b72?Tb4b4b4.Te6edf3lxmf_user_iconTff7b72?Tb4b4b4.Te6edf3icon_name Tff7b72|| Ta5d6ff'account'Tb4b4b4)Ta5d6ff"
Te6edf3sizeTff7b72=Ta5d6ff"18"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-zinc-100 truncate w-40"Tb4b4b4>
Tff7b72{{
Te6edf3selectedMarkerTb4b4b4.Te6edf3peerTff7b72?Tb4b4b4.Te6edf3display_name Tff7b72||
Te6edf3selectedMarkerTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3destination_hashTb4b4b4.Te6edf3substringTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff8Tb4b4b4)
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-mono text-gray-500 uppercase tracking-tighter"Tb4b4b4>
Tff7b72{{ Te6edf3selectedMarkerTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3destination_hash Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"text-gray-500 hover:text-gray-700 dark:hover:text-zinc-300"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3selectedMarker Tff7b72= Tff7b72nullTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72v-icon Te6edf3iconTff7b72=Ta5d6ff"mdi-close" Te6edf3sizeTff7b72=Ta5d6ff"20"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-4 space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4 text-sm"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-gray-400 uppercase tracking-wider mb-0.5"Tb4b4b4>
Latitude
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-mono"Tb4b4b4>
Tff7b72{{ Te6edf3selectedMarkerTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3latitudeTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff6Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-gray-400 uppercase tracking-wider mb-0.5"Tb4b4b4>
Longitude
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-mono"Tb4b4b4>
Tff7b72{{ Te6edf3selectedMarkerTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3longitudeTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff6Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-gray-400 uppercase tracking-wider mb-0.5"Tb4b4b4>
Altitude
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Tff7b72{{ Te6edf3selectedMarkerTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3altitudeTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff1Tb4b4b4) Tff7b72}}mTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-gray-400 uppercase tracking-wider mb-0.5"Tb4b4b4>SpeedTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Tff7b72{{ Te6edf3selectedMarkerTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3speedTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff1Tb4b4b4) Tff7b72}}km/hTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedMarkerTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3physical_linkTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"pt-2 border-t border-gray-100 dark:border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-gray-400 uppercase tracking-wider mb-1"Tb4b4b4>SignalTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-4 text-xs font-mono"Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>RSSI: Tff7b72{{ Te6edf3selectedMarkerTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3physical_linkTb4b4b4.Te6edf3rssi Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>SNR: Tff7b72{{ Te6edf3selectedMarkerTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3physical_linkTb4b4b4.Te6edf3snr Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Q: Tff7b72{{ Te6edf3selectedMarkerTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3physical_linkTb4b4b4.Te6edf3q Tff7b72}}%Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"pt-2 text-[10px] text-gray-400 flex items-center gap-1"Tb4b4b4>
Tb4b4b4<Tff7b72v-icon Te6edf3iconTff7b72=Ta5d6ff"mdi-clock-outline" Te6edf3sizeTff7b72=Ta5d6ff"12"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Updated: Tff7b72{{ Te6edf3formatTimestampTb4b4b4(Te6edf3selectedMarkerTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3timestampTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"w-full py-2 bg-blue-500 hover:bg-blue-600 text-white rounded-lg font-bold transition-colors text-sm flex items-center justify-center gap-2"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openChatTb4b4b4(Te6edf3selectedMarkerTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3destination_hashTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72v-icon Te6edf3iconTff7b72=Ta5d6ff"mdi-message-text" Te6edf3sizeTff7b72=Ta5d6ff"16"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72v-iconTb4b4b4>
Open Chat
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- export instructions overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isExportMode Tff7b72&& Tff7b72!Te6edf3selectedBboxTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute top-4 left-1/2 -translate-x-1/2 z-20 px-4 py-2 bg-blue-600 text-white rounded-full shadow-lg font-medium text-sm animate-bounce"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.export_instructions"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- export configuration overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isExportMode Tff7b72&& Te6edf3selectedBboxTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute top-4 left-1/2 -translate-x-1/2 z-20 w-80 bg-white dark:bg-zinc-900 rounded-xl shadow-2xl border border-gray-200 dark:border-zinc-800 overflow-hidden text-gray-900 dark:text-zinc-100"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-4 border-b border-gray-200 dark:border-zinc-800 flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.export_area"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3classTff7b72=Ta5d6ff"text-gray-500 hover:text-gray-700 dark:hover:text-zinc-300" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3cancelExportTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-4 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs font-bold text-gray-500 uppercase mb-1"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"map.min_zoom"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3exportMinZoomTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3maxTff7b72=Ta5d6ff"20"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 dark:bg-zinc-800 border border-gray-300 dark:border-zinc-700 rounded-lg px-3 py-2 text-sm dark:text-zinc-100"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs font-bold text-gray-500 uppercase mb-1"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"map.max_zoom"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTb4b4b4.Te6edf3numberTff7b72=Ta5d6ff"Te6edf3exportMaxZoomTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"number"
Te6edf3minTff7b72=Ta5d6ff"0"
Te6edf3maxTff7b72=Ta5d6ff"20"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 dark:bg-zinc-800 border border-gray-300 dark:border-zinc-700 rounded-lg px-3 py-2 text-sm dark:text-zinc-100"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between items-center text-sm"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-gray-600 dark:text-zinc-400"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.tile_count"Tb4b4b4) Tff7b72}}:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-bold text-blue-600"Tb4b4b4>Tff7b72{{ Te6edf3estimatedTiles Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3isExportingTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex-1 py-2 bg-gray-200 hover:bg-gray-300 dark:bg-zinc-700 dark:hover:bg-zinc-600 disabled:bg-gray-100 dark:disabled:bg-zinc-800 text-gray-900 dark:text-zinc-100 rounded-lg font-bold transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3cancelExportTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.cancel"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3isExportingTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex-1 py-2 bg-blue-500 hover:bg-blue-600 disabled:bg-blue-300 text-white rounded-lg font-bold transition-colors shadow-md"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3startExportTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.start_export"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- export progress overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3exportStatusTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute bottom-4 right-4 z-20 w-72 bg-white dark:bg-zinc-900 rounded-xl shadow-2xl border border-gray-200 dark:border-zinc-800 p-4 space-y-3 animate-in slide-in-from-bottom-4"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between items-center"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-bold text-sm text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{
Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"completed" Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"map.download_ready"Tb4b4b4) Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"map.exporting"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff'completed' Tff7b72|| Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff'failed'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-gray-400"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3exportStatus Tff7b72= Tff7b72nullTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-else
Te6edf3classTff7b72=Ta5d6ff"text-xs font-bold text-red-500 hover:text-red-600 uppercase tracking-tighter"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3cancelActiveExportTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.cancel"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72!== Ta5d6ff'completed' Tff7b72&& Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72!== Ta5d6ff'failed'Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-full h-2 bg-gray-100 dark:bg-zinc-800 rounded-full overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"h-full bg-blue-500 transition-all duration-300"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3widthTff7b72: Te6edf3exportStatusTb4b4b4.Te6edf3progress Tff7b72+ Ta5d6ff'%' Tb4b4b4}Ta5d6ff"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between text-[10px] text-gray-500 mt-1 uppercase font-bold tracking-wider"Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3exportStatusTb4b4b4.Te6edf3current Tff7b72}} / Tff7b72{{ Te6edf3exportStatusTb4b4b4.Te6edf3total Tff7b72}} tilesTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3exportStatusTb4b4b4.Te6edf3progress Tff7b72}}%Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff'completed'Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72a
Tb4b4b4:Te6edf3hrefTff7b72=Ta5d6ff"Ta5d6ff`Ta5d6ff/api/v1/map/export/Tffd700${Te6edf3exportIdTffd700}Ta5d6ff/downloadTa5d6ff`Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-center space-x-2 w-full py-2 bg-emerald-500 hover:bg-emerald-600 text-white rounded-lg font-bold transition-colors shadow-md"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"download" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.download_now"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72aTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff'failed'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-xs text-red-500 bg-red-50 dark:bg-red-950/20 p-2 rounded-lg"
Tb4b4b4>
Tff7b72{{ Te6edf3exportStatusTb4b4b4.Te6edf3error Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- loading overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isUploadingTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute inset-0 z-20 flex items-center justify-center bg-white/50 dark:bg-black/50 backdrop-blur-sm"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"bg-white dark:bg-zinc-900 p-6 rounded-xl shadow-xl flex flex-col items-center space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"animate-spin rounded-full h-12 w-12 border-4 border-blue-500 border-t-transparent"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-gray-900 dark:text-zinc-100 font-medium"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.uploading"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- no map warning -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3offlineEnabled Tff7b72&& Tff7b72!Te6edf3hasOfflineMapTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute inset-0 z-20 flex items-center justify-center p-4"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"max-w-md bg-white dark:bg-zinc-900 p-6 rounded-xl shadow-xl border border-amber-200 dark:border-amber-900/50 flex flex-col items-center text-center space-y-4"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"alert-circle" Te6edf3classTff7b72=Ta5d6ff"size-12 text-amber-500" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-gray-900 dark:text-zinc-100 font-medium"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.no_map_loaded"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"px-4 py-2 bg-amber-500 hover:bg-amber-600 text-white rounded-lg transition-colors font-medium"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$refsTb4b4b4.Te6edf3fileInputTb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.upload_mbtiles"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- map info overlay -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"absolute bottom-4 left-4 z-10 space-y-2 pointer-events-none"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3metadata Tff7b72&& Te6edf3metadataTb4b4b4.Te6edf3name Tff7b72&& Tff7b72!Te6edf3metadataTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff'Map Export'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-white/80 dark:bg-zinc-900/80 backdrop-blur border border-gray-200 dark:border-zinc-800 p-2 rounded-lg text-xs text-gray-600 dark:text-zinc-400 pointer-events-auto shadow-sm"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-zinc-100 mb-1"Tb4b4b4>
Tff7b72{{ Te6edf3metadataTb4b4b4.Te6edf3name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3metadataTb4b4b4.Te6edf3attributionTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"max-w-xs overflow-hidden text-ellipsis whitespace-nowrap"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3metadataTb4b4b4.Te6edf3attributionTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3metadataTb4b4b4.Te6edf3attribution Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- Lat/Lon Box -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-white/80 dark:bg-zinc-900/80 backdrop-blur border border-gray-200 dark:border-zinc-800 p-2 rounded-lg text-[10px] font-mono text-gray-600 dark:text-zinc-400 pointer-events-auto shadow-sm flex flex-col space-y-0.5"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between space-x-4"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"opacity-50 uppercase tracking-tighter"Tb4b4b4>LatTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3displayCoordsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff6Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between space-x-4"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"opacity-50 uppercase tracking-tighter"Tb4b4b4>LonTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3displayCoordsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff6Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- controls overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isSettingsOpenTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute top-14 right-4 z-20 w-64 bg-white/95 dark:bg-zinc-900/95 backdrop-blur-sm rounded-xl shadow-2xl border border-gray-200 dark:border-zinc-800 overflow-hidden"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-4 border-b border-gray-200 dark:border-zinc-800 flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"app.settings"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"text-gray-500 hover:text-gray-700 dark:hover:text-zinc-300"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3isSettingsOpen Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-4 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"w-full flex items-center justify-center space-x-2 px-3 py-2 bg-gray-100 hover:bg-gray-200 dark:bg-zinc-800 dark:hover:bg-zinc-700 text-gray-900 dark:text-zinc-100 rounded-lg transition-colors text-sm font-medium"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3setAsDefaultViewTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"pin" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.set_as_default"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3offlineEnabledTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"border-t border-gray-100 dark:border-zinc-800 pt-4 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs font-bold text-gray-500 uppercase mb-2"Tb4b4b4>Preset ServersTb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 gap-2 mb-4"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"px-3 py-2 text-xs font-semibold rounded-lg transition-all border"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3tileServerUrlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff'openstreetmap.org'Tb4b4b4)
Tff7b72? Ta5d6ff'bg-blue-500 border-blue-600 text-white shadow-sm'
Tff7b72: Ta5d6ff'bg-white dark:bg-zinc-800 border-gray-200 dark:border-zinc-700 text-gray-700 dark:text-zinc-300 hover:bg-gray-50 dark:hover:bg-zinc-700'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3setTileServerTb4b4b4(Ta5d6ff'osm'Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.tile_server_openstreetmap"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs font-bold text-gray-500 uppercase mb-1"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"map.tile_server_url"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3tileServerUrlTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 dark:bg-zinc-800 border border-gray-300 dark:border-zinc-700 rounded-lg px-3 py-2 text-sm dark:text-zinc-100"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.tile_server_url_placeholder'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3blurTff7b72=Ta5d6ff"Te6edf3saveTileServerUrlTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-500 mt-1"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.tile_server_url_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs font-bold text-gray-500 uppercase mb-1"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"map.nominatim_api_url"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3nominatimApiUrlTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 dark:bg-zinc-800 border border-gray-300 dark:border-zinc-700 rounded-lg px-3 py-2 text-sm dark:text-zinc-100"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.nominatim_api_url_placeholder'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3blurTff7b72=Ta5d6ff"Te6edf3saveNominatimApiUrlTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-500 mt-1"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.nominatim_api_url_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between py-2 border-t border-gray-100 dark:border-zinc-800"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-700 dark:text-zinc-300"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.caching_enabled"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72Toggle Tb4b4b4:Te6edf3model-valueTff7b72=Ta5d6ff"Te6edf3cachingEnabledTa5d6ff" Tb4b4b4@Te6edf3updateTb4b4b4:Te6edf3model-valueTff7b72=Ta5d6ff"Te6edf3toggleCachingTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"border-t border-gray-100 dark:border-zinc-800 pt-4 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs font-bold text-gray-500 uppercase mb-1"
Tb4b4b4>MBTiles Storage DirectoryTb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3mbtilesDirTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-gray-50 dark:bg-zinc-800 border border-gray-300 dark:border-zinc-700 rounded-lg px-3 py-2 text-sm dark:text-zinc-100"
Te6edf3placeholderTff7b72=Ta5d6ff"Default storage directory"
Tb4b4b4@Te6edf3blurTff7b72=Ta5d6ff"Te6edf3saveMBTilesDirTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3mbtilesListTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs font-bold text-gray-500 uppercase mb-1"Tb4b4b4>Available MapsTb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"max-h-48 overflow-y-auto space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3file Tff7b72in Te6edf3mbtilesListTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3fileTb4b4b4.Te6edf3nameTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between p-2 rounded-lg bg-gray-50 dark:bg-zinc-800/50 border border-gray-200 dark:border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col min-w-0 flex-1 mr-2"Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"text-xs font-medium text-gray-900 dark:text-zinc-100 truncate"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3fileTb4b4b4.Te6edf3nameTa5d6ff"
Tb4b4b4>Tff7b72{{ Te6edf3fileTb4b4b4.Te6edf3name Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-500"
Tb4b4b4>Tff7b72{{ Tb4b4b4(Te6edf3fileTb4b4b4.Te6edf3size Tff7b72/ T79c0ff1024 Tff7b72/ T79c0ff1024Tb4b4b4)Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff1Tb4b4b4) Tff7b72}} MBTb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center space-x-1"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3fileTb4b4b4.Te6edf3is_activeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-1 text-blue-500 hover:bg-blue-50 dark:hover:bg-blue-900/20 rounded transition-colors"
Te6edf3titleTff7b72=Ta5d6ff"Set as active"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3setActiveMBTilesTb4b4b4(Te6edf3fileTb4b4b4.Te6edf3nameTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"check" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"p-1 text-emerald-500" Te6edf3titleTff7b72=Ta5d6ff"Active"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"check-circle" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-1 text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20 rounded transition-colors"
Te6edf3titleTff7b72=Ta5d6ff"Delete"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3deleteMBTilesTb4b4b4(Te6edf3fileTb4b4b4.Te6edf3nameTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"delete" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"w-full px-3 py-2 bg-red-50 hover:bg-red-100 dark:bg-red-950/20 dark:hover:bg-red-900/30 text-red-600 dark:text-red-400 rounded-lg transition-colors text-xs font-bold uppercase tracking-wider"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3clearCacheTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.clear_cache"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-500 space-y-1 pt-2 border-t border-gray-100 dark:border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.zoom"Tb4b4b4) Tff7b72}}:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-mono"Tb4b4b4>Tff7b72{{ Te6edf3currentZoomTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff1Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Lat:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-mono"Tb4b4b4>Tff7b72{{ Te6edf3displayCoordsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff5Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Lon:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-mono"Tb4b4b4>Tff7b72{{ Te6edf3displayCoordsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff5Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- onboarding tooltip -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showOnboardingTooltipTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-[100] pointer-events-none"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3dismissOnboardingTooltipTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"absolute inset-0 bg-black/50 pointer-events-auto"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3refTff7b72=Ta5d6ff"tooltipElement"
Te6edf3classTff7b72=Ta5d6ff"absolute bg-white dark:bg-zinc-900 rounded-xl shadow-2xl border border-gray-200 dark:border-zinc-800 p-4 pointer-events-auto max-w-xs sm:max-w-sm"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Te6edf3tooltipStyleTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-start justify-between mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-zinc-100 text-sm"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.onboarding_title"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"text-gray-400 hover:text-gray-600 dark:hover:text-zinc-300"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3dismissOnboardingTooltipTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-600 dark:text-zinc-400 mb-3"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.onboarding_text"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"w-full px-3 py-2 bg-blue-500 hover:bg-blue-600 text-white rounded-lg transition-colors text-sm font-medium"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3dismissOnboardingTooltipTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.onboarding_got_it"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72svg
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3arrowPath Tff7b72&& Tff7b72!Te6edf3isMobileScreenTa5d6ff"
Te6edf3refTff7b72=Ta5d6ff"arrowElement"
Te6edf3classTff7b72=Ta5d6ff"absolute pointer-events-none"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Te6edf3arrowStyleTa5d6ff"
Tb4b4b4:Te6edf3widthTff7b72=Ta5d6ff"Te6edf3arrowSvgWidthTa5d6ff"
Tb4b4b4:Te6edf3heightTff7b72=Ta5d6ff"Te6edf3arrowSvgHeightTa5d6ff"
Tb4b4b4:Te6edf3viewBoxTff7b72=Ta5d6ff"Ta5d6ff`Ta5d6ff0 0 Tffd700${Te6edf3arrowSvgWidthTffd700}Ta5d6ff Tffd700${Te6edf3arrowSvgHeightTffd700}Ta5d6ff`Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72path Tb4b4b4:Te6edf3dTff7b72=Ta5d6ff"Te6edf3arrowPathTa5d6ff" Te6edf3strokeTff7b72=Ta5d6ff"#3b82f6" Te6edf3stroke-widthTff7b72=Ta5d6ff"3" Te6edf3fillTff7b72=Ta5d6ff"none" Te6edf3marker-endTff7b72=Ta5d6ff"url(#arrowhead)" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72defsTb4b4b4>
Tb4b4b4<Tff7b72marker Te6edf3idTff7b72=Ta5d6ff"arrowhead" Te6edf3markerWidthTff7b72=Ta5d6ff"10" Te6edf3markerHeightTff7b72=Ta5d6ff"10" Te6edf3refXTff7b72=Ta5d6ff"9" Te6edf3refYTff7b72=Ta5d6ff"3" Te6edf3orientTff7b72=Ta5d6ff"auto"Tb4b4b4>
Tb4b4b4<Tff7b72polygon Te6edf3pointsTff7b72=Ta5d6ff"0 0, 10 3, 0 6" Te6edf3fillTff7b72=Ta5d6ff"#3b82f6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72markerTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72defsTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72svgTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- floating upload button (mobile only) -->
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"sm:hidden fixed bottom-4 right-4 z-30 p-4 bg-blue-500 hover:bg-blue-600 text-white rounded-full shadow-lg transition-colors"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.upload_mbtiles'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$refsTb4b4b4.Te6edf3fileInputTb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"upload" Te6edf3classTff7b72=Ta5d6ff"size-6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- save drawing modal -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showSaveDrawingModalTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-[100] flex items-center justify-center p-4 bg-black/40 backdrop-blur-sm"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-white dark:bg-zinc-900 w-full max-w-md rounded-2xl shadow-2xl overflow-hidden animate-in fade-in zoom-in duration-200"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-6"Tb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"text-xl font-bold text-gray-900 dark:text-white flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-save-outline" Te6edf3classTff7b72=Ta5d6ff"size-6 text-blue-500" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.save_drawing_title"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-gray-400 mt-1"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.save_drawing_desc"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mt-6"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"block text-xs font-bold text-gray-500 dark:text-zinc-500 uppercase tracking-widest mb-2"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.drawing_name"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3refTff7b72=Ta5d6ff"newDrawingNameInput"
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newDrawingNameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"w-full px-4 py-3 bg-gray-50 dark:bg-zinc-800 border-none rounded-xl text-sm focus:ring-2 focus:ring-blue-500 transition-all dark:text-white"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'map.drawing_name_placeholder'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3keyupTb4b4b4.Te6edf3enterTff7b72=Ta5d6ff"Te6edf3saveDrawingTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mt-8 flex gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex-1 px-4 py-2.5 rounded-xl border border-gray-200 dark:border-zinc-700 text-sm font-semibold text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-zinc-800 transition"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showSaveDrawingModal Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.close"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex-1 px-4 py-2.5 rounded-xl bg-blue-600 text-white text-sm font-semibold shadow-lg shadow-blue-500/25 hover:bg-blue-500 transition active:scale-95 disabled:opacity-50"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3newDrawingNameTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3saveDrawingTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.save"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- load drawing modal -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showLoadDrawingModalTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-[100] flex items-center justify-center p-4 bg-black/40 backdrop-blur-sm"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-white dark:bg-zinc-900 w-full max-w-lg rounded-2xl shadow-2xl overflow-hidden animate-in fade-in zoom-in duration-200"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-6"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between mb-6"Tb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"text-xl font-bold text-gray-900 dark:text-white flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"folder-open-outline" Te6edf3classTff7b72=Ta5d6ff"size-6 text-blue-500" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.load_drawing_title"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3classTff7b72=Ta5d6ff"text-gray-400 hover:text-gray-600" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showLoadDrawingModal Tff7b72= Tff7b72falseTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isLoadingDrawingsTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"py-12 flex flex-col items-center justify-center"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"loading" Te6edf3classTff7b72=Ta5d6ff"size-10 animate-spin text-blue-500 mb-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium text-gray-500"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.loading_drawings"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3savedDrawingsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"py-12 flex flex-col items-center justify-center text-center"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"size-16 bg-gray-100 dark:bg-zinc-800 rounded-full flex items-center justify-center mb-4"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"folder-outline" Te6edf3classTff7b72=Ta5d6ff"size-8 text-gray-400" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold text-gray-900 dark:text-white"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.no_drawings"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-gray-400 mt-1"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.no_drawings_desc"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"max-h-[400px] overflow-y-auto space-y-2 pr-2"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3drawing Tff7b72in Te6edf3savedDrawingsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3drawingTb4b4b4.Te6edf3idTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"group p-4 bg-gray-50 dark:bg-zinc-800/50 hover:bg-blue-50 dark:hover:bg-blue-900/20 rounded-2xl border border-transparent hover:border-blue-200 dark:hover:border-blue-800 transition-all cursor-pointer flex items-center justify-between"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3loadDrawingTb4b4b4(Te6edf3drawingTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 min-w-0 mr-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-white truncate"Tb4b4b4>Tff7b72{{ Te6edf3drawingTb4b4b4.Te6edf3name Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-500 mt-0.5"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"map.saved_on"Tb4b4b4) Tff7b72}} Tff7b72{{ Tff7b72new Tffa657DateTb4b4b4(Te6edf3drawingTb4b4b4.Te6edf3updated_atTb4b4b4)Tb4b4b4.Te6edf3toLocaleStringTb4b4b4(Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-2 text-gray-400 hover:text-red-500 transition-colors"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'common.delete'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3deleteDrawingTb4b4b4(Te6edf3drawingTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"trash-can-outline" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mt-8 flex justify-end"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"px-6 py-2.5 rounded-xl border border-gray-200 dark:border-zinc-700 text-sm font-semibold text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-zinc-800 transition"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showLoadDrawingModal Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.close"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- mobile note modal -->
Tb4b4b4<Tff7b72transition Te6edf3nameTff7b72=Ta5d6ff"fade"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showNoteModalTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-[100] flex items-end sm:items-center justify-center p-4 bg-black/50 backdrop-blur-sm"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3selfTff7b72=Ta5d6ff"Te6edf3closeNoteEditorTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-white dark:bg-zinc-900 w-full max-w-lg rounded-t-2xl sm:rounded-2xl shadow-2xl overflow-hidden animate-slide-up sm:animate-fade-in"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-4 border-b border-gray-100 dark:border-zinc-800 flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold text-gray-900 dark:text-white flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"note-edit" Te6edf3classTff7b72=Ta5d6ff"size-5 text-amber-500" Tb4b4b4/Tb4b4b4>
Edit Note
Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"p-2 text-gray-400 hover:bg-gray-100 dark:hover:bg-zinc-800 rounded-full transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3closeNoteEditorTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-4"Tb4b4b4>
Tb4b4b4<Tff7b72textarea
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3noteTextTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full h-40 p-4 text-base bg-gray-50 dark:bg-zinc-800 border border-gray-200 dark:border-zinc-700 rounded-xl focus:ring-2 focus:ring-amber-500 focus:border-transparent outline-none resize-none text-gray-900 dark:text-zinc-100"
Te6edf3placeholderTff7b72=Ta5d6ff"Type your note here..."
Te6edf3autofocus
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72textareaTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-4 bg-gray-50 dark:bg-zinc-800/50 flex justify-between gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"flex-1 px-4 py-3 text-sm font-bold text-red-500 hover:bg-red-100 dark:hover:bg-red-900/20 rounded-xl transition-colors flex items-center justify-center gap-2"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3deleteNoteTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"trash-can-outline" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Delete
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"flex-[2] px-4 py-3 text-sm font-bold bg-amber-500 text-white hover:bg-amber-600 rounded-xl shadow-lg shadow-amber-500/30 transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3saveNoteTa5d6ff"
Tb4b4b4>
Save Note
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72transitionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Ta5d6ff"ol/ol.css"Tb4b4b4;
Tff7b72import Tffa657Map Tff7b72from Ta5d6ff"ol/Map"Tb4b4b4;
Tff7b72import Te6edf3View Tff7b72from Ta5d6ff"ol/View"Tb4b4b4;
Tff7b72import Te6edf3TileLayer Tff7b72from Ta5d6ff"ol/layer/Tile"Tb4b4b4;
Tff7b72import Te6edf3VectorLayer Tff7b72from Ta5d6ff"ol/layer/Vector"Tb4b4b4;
Tff7b72import Te6edf3XYZ Tff7b72from Ta5d6ff"ol/source/XYZ"Tb4b4b4;
Tff7b72import Te6edf3VectorSource Tff7b72from Ta5d6ff"ol/source/Vector"Tb4b4b4;
Tff7b72import Te6edf3Feature Tff7b72from Ta5d6ff"ol/Feature"Tb4b4b4;
Tff7b72import Te6edf3Point Tff7b72from Ta5d6ff"ol/geom/Point"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3StyleTb4b4b4, Te6edf3TextTb4b4b4, Te6edf3FillTb4b4b4, Te6edf3StrokeTb4b4b4, Te6edf3Circle Tff7b72as Te6edf3CircleStyleTb4b4b4, Te6edf3Icon Tb4b4b4} Tff7b72from Ta5d6ff"ol/style"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3fromLonLatTb4b4b4, Te6edf3toLonLat Tb4b4b4} Tff7b72from Ta5d6ff"ol/proj"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3defaults Tff7b72as Te6edf3defaultControls Tb4b4b4} Tff7b72from Ta5d6ff"ol/control"Tb4b4b4;
Tff7b72import Te6edf3DragBox Tff7b72from Ta5d6ff"ol/interaction/DragBox"Tb4b4b4;
Tff7b72import Te6edf3Draw Tff7b72from Ta5d6ff"ol/interaction/Draw"Tb4b4b4;
Tff7b72import Te6edf3Modify Tff7b72from Ta5d6ff"ol/interaction/Modify"Tb4b4b4;
Tff7b72import Te6edf3Snap Tff7b72from Ta5d6ff"ol/interaction/Snap"Tb4b4b4;
Tff7b72import Te6edf3Select Tff7b72from Ta5d6ff"ol/interaction/Select"Tb4b4b4;
Tff7b72import Te6edf3Translate Tff7b72from Ta5d6ff"ol/interaction/Translate"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3getAreaTb4b4b4, Te6edf3getLength Tb4b4b4} Tff7b72from Ta5d6ff"ol/sphere"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3LineStringTb4b4b4, Te6edf3PolygonTb4b4b4, Te6edf3Circle Tb4b4b4} Tff7b72from Ta5d6ff"ol/geom"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3fromCircle Tb4b4b4} Tff7b72from Ta5d6ff"ol/geom/Polygon"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3unByKey Tb4b4b4} Tff7b72from Ta5d6ff"ol/Observable"Tb4b4b4;
Tff7b72import Te6edf3Overlay Tff7b72from Ta5d6ff"ol/Overlay"Tb4b4b4;
Tff7b72import Te6edf3GeoJSON Tff7b72from Ta5d6ff"ol/format/GeoJSON"Tb4b4b4;
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72import Te6edf3TileCache Tff7b72from Ta5d6ff"../../js/TileCache"Tb4b4b4;
Tff7b72import Te6edf3Toggle Tff7b72from Ta5d6ff"../forms/Toggle.vue"Tb4b4b4;
Tff7b72import Te6edf3WebSocketConnection Tff7b72from Ta5d6ff"../../js/WebSocketConnection"Tb4b4b4;
Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"MapPage"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3MaterialDesignIconTb4b4b4,
Te6edf3ToggleTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3mapTff7b72: Tff7b72nullTb4b4b4,
Te6edf3offlineEnabledTff7b72: Tff7b72falseTb4b4b4,
Te6edf3hasOfflineMapTff7b72: Tff7b72falseTb4b4b4,
Te6edf3metadataTff7b72: Tff7b72nullTb4b4b4,
Te6edf3isUploadingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isSettingsOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3currentCenterTff7b72: Tb4b4b4[T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4]Tb4b4b4,
Te6edf3currentZoomTff7b72: T79c0ff2Tb4b4b4,
Te6edf3cursorCoordsTff7b72: Tff7b72nullTb4b4b4,
Te6edf3configTff7b72: Tff7b72nullTb4b4b4,
Te6edf3peersTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
T8b949e// telemetry
Te6edf3telemetryListTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3markerSourceTff7b72: Tff7b72nullTb4b4b4,
Te6edf3markerLayerTff7b72: Tff7b72nullTb4b4b4,
Te6edf3selectedMarkerTff7b72: Tff7b72nullTb4b4b4,
T8b949e// caching
Te6edf3cachingEnabledTff7b72: Tff7b72trueTb4b4b4,
T8b949e// tile server
Te6edf3tileServerUrlTff7b72: Ta5d6ff"https://tile.openstreetmap.org/{z}/{x}/{y}.png"Tb4b4b4,
T8b949e// search
Te6edf3searchQueryTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3searchResultsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3isSearchingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isSearchFocusedTff7b72: Tff7b72falseTb4b4b4,
Te6edf3searchErrorTff7b72: Tff7b72nullTb4b4b4,
Te6edf3nominatimApiUrlTff7b72: Ta5d6ff"https://nominatim.openstreetmap.org"Tb4b4b4,
Te6edf3searchTimeoutTff7b72: Tff7b72nullTb4b4b4,
T8b949e// export mode
Te6edf3isExportModeTff7b72: Tff7b72falseTb4b4b4,
Te6edf3dragBoxTff7b72: Tff7b72nullTb4b4b4,
Te6edf3selectedBboxTff7b72: Tff7b72nullTb4b4b4,
Te6edf3exportMinZoomTff7b72: T79c0ff0Tb4b4b4,
Te6edf3exportMaxZoomTff7b72: T79c0ff10Tb4b4b4,
Te6edf3isExportingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3exportIdTff7b72: Tff7b72nullTb4b4b4,
Te6edf3exportStatusTff7b72: Tff7b72nullTb4b4b4,
Te6edf3exportIntervalTff7b72: Tff7b72nullTb4b4b4,
T8b949e// onboarding
Te6edf3showOnboardingTooltipTff7b72: Tff7b72falseTb4b4b4,
Te6edf3tooltipStyleTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3arrowStyleTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3arrowPathTff7b72: Tff7b72nullTb4b4b4,
Te6edf3arrowSvgWidthTff7b72: T79c0ff200Tb4b4b4,
Te6edf3arrowSvgHeightTff7b72: T79c0ff200Tb4b4b4,
Te6edf3isMobileScreenTff7b72: Tff7b72falseTb4b4b4,
T8b949e// MBTiles management
Te6edf3mbtilesListTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3mbtilesDirTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3isMapLoadedTff7b72: Tff7b72falseTb4b4b4,
T8b949e// drawing tools
Te6edf3drawTff7b72: Tff7b72nullTb4b4b4,
Te6edf3modifyTff7b72: Tff7b72nullTb4b4b4,
Te6edf3snapTff7b72: Tff7b72nullTb4b4b4,
Te6edf3drawSourceTff7b72: Tff7b72nullTb4b4b4,
Te6edf3drawLayerTff7b72: Tff7b72nullTb4b4b4,
Te6edf3drawTypeTff7b72: Tff7b72nullTb4b4b4, T8b949e// 'Point', 'LineString', 'Polygon', 'Circle' or null
Te6edf3isDrawingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3drawingToolsTff7b72: Tb4b4b4[
Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"Select"Tb4b4b4, Te6edf3iconTff7b72: Ta5d6ff"cursor-default" Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"Point"Tb4b4b4, Te6edf3iconTff7b72: Ta5d6ff"map-marker-plus" Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"LineString"Tb4b4b4, Te6edf3iconTff7b72: Ta5d6ff"vector-line" Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"Polygon"Tb4b4b4, Te6edf3iconTff7b72: Ta5d6ff"vector-polygon" Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"Circle"Tb4b4b4, Te6edf3iconTff7b72: Ta5d6ff"circle-outline" Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"Export"Tb4b4b4, Te6edf3iconTff7b72: Ta5d6ff"crop-free" Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
T8b949e// measurement
Te6edf3isMeasuringTff7b72: Tff7b72falseTb4b4b4,
Te6edf3sketchTff7b72: Tff7b72nullTb4b4b4,
Te6edf3helpTooltipElementTff7b72: Tff7b72nullTb4b4b4,
Te6edf3helpTooltipTff7b72: Tff7b72nullTb4b4b4,
Te6edf3measureTooltipElementTff7b72: Tff7b72nullTb4b4b4,
Te6edf3measureTooltipTff7b72: Tff7b72nullTb4b4b4,
Te6edf3measurementOverlaysTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
T8b949e// drawing storage
Te6edf3savedDrawingsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
T8b949e// note editing
Te6edf3editingFeatureTff7b72: Tff7b72nullTb4b4b4,
Te6edf3noteTextTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3hoveredFeatureTff7b72: Tff7b72nullTb4b4b4,
Te6edf3noteOverlayTff7b72: Tff7b72nullTb4b4b4,
Te6edf3showNoteModalTff7b72: Tff7b72falseTb4b4b4,
Te6edf3showSaveDrawingModalTff7b72: Tff7b72falseTb4b4b4,
Te6edf3newDrawingNameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3isLoadingDrawingsTff7b72: Tff7b72falseTb4b4b4,
Te6edf3showLoadDrawingModalTff7b72: Tff7b72falseTb4b4b4,
Te6edf3styleCacheTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3selectedFeatureTff7b72: Tff7b72nullTb4b4b4,
Te6edf3selectTff7b72: Tff7b72nullTb4b4b4,
Te6edf3translateTff7b72: Tff7b72nullTb4b4b4,
T8b949e// context menu
Te6edf3showContextMenuTff7b72: Tff7b72falseTb4b4b4,
Te6edf3contextMenuPosTff7b72: Tb4b4b4{ Te6edf3xTff7b72: T79c0ff0Tb4b4b4, Te6edf3yTff7b72: T79c0ff0 Tb4b4b4}Tb4b4b4,
Te6edf3contextMenuFeatureTff7b72: Tff7b72nullTb4b4b4,
Te6edf3contextMenuCoordTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3estimatedTilesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedBboxTb4b4b4) Tff7b72return T79c0ff0Tb4b4b4;
Tff7b72const Tb4b4b4[Te6edf3minLonTb4b4b4, Te6edf3minLatTb4b4b4, Te6edf3maxLonTb4b4b4, Te6edf3maxLatTb4b4b4] Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedBboxTb4b4b4;
Tff7b72let Te6edf3total Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3z Tff7b72= Tff7b72thisTb4b4b4.Te6edf3exportMinZoomTb4b4b4; Te6edf3z Tff7b72<= Tff7b72thisTb4b4b4.Te6edf3exportMaxZoomTb4b4b4; Te6edf3zTff7b72++Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3x1 Tff7b72= Tff7b72thisTb4b4b4.Te6edf3lonToTileTb4b4b4(Te6edf3minLonTb4b4b4, Te6edf3zTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3x2 Tff7b72= Tff7b72thisTb4b4b4.Te6edf3lonToTileTb4b4b4(Te6edf3maxLonTb4b4b4, Te6edf3zTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3y1 Tff7b72= Tff7b72thisTb4b4b4.Te6edf3latToTileTb4b4b4(Te6edf3maxLatTb4b4b4, Te6edf3zTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3y2 Tff7b72= Tff7b72thisTb4b4b4.Te6edf3latToTileTb4b4b4(Te6edf3minLatTb4b4b4, Te6edf3zTb4b4b4)Tb4b4b4;
Te6edf3total Tff7b72+= Tb4b4b4(Tffa657MathTb4b4b4.Te6edf3absTb4b4b4(Te6edf3x2 Tff7b72- Te6edf3x1Tb4b4b4) Tff7b72+ T79c0ff1Tb4b4b4) Tff7b72* Tb4b4b4(Tffa657MathTb4b4b4.Te6edf3absTb4b4b4(Te6edf3y2 Tff7b72- Te6edf3y1Tb4b4b4) Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3totalTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3displayCoordsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3cursorCoords Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3currentCenterTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3watchTff7b72: Tb4b4b4{
Te6edf3showSaveDrawingModalTb4b4b4(Te6edf3valTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3valTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3newDrawingNameInputTff7b72?Tb4b4b4.Te6edf3focusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getConfigTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Load persisted map state
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3savedState Tff7b72= Tff7b72await Te6edf3TileCacheTb4b4b4.Te6edf3getMapStateTb4b4b4(Ta5d6ff"last_view"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3savedStateTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3currentCenter Tff7b72= Te6edf3savedStateTb4b4b4.Te6edf3center Tff7b72|| Tb4b4b4[T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentZoom Tff7b72= Te6edf3savedStateTb4b4b4.Te6edf3zoom Tff7b72|| T79c0ff2Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3savedStateTb4b4b4.Te6edf3offlineEnabled Tff7b72!== Tff7b72undefinedTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3offlineEnabled Tff7b72= Te6edf3savedStateTb4b4b4.Te6edf3offlineEnabledTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3savedStateTb4b4b4.Te6edf3tileServerUrlTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3tileServerUrl Tff7b72= Te6edf3savedStateTb4b4b4.Te6edf3tileServerUrlTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3savedStateTb4b4b4.Te6edf3telemetryTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3telemetryList Tff7b72= Te6edf3savedStateTb4b4b4.Te6edf3telemetryTb4b4b4;
T8b949e// Temporarily store drawings to restore after map/source init
Tff7b72thisTb4b4b4.Te6edf3_persistedDrawings Tff7b72= Te6edf3savedStateTb4b4b4.Te6edf3drawingsTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(Ta5d6ff"Failed to load map state from cache"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3initMapTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3telemetryListTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3updateMarkersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// Restore drawings if any
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3_persistedDrawings Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3format Tff7b72= Tff7b72new Te6edf3GeoJSONTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3features Tff7b72= Te6edf3formatTb4b4b4.Te6edf3readFeaturesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3_persistedDrawingsTb4b4b4, Tb4b4b4{
Te6edf3dataProjectionTff7b72: Ta5d6ff"EPSG:4326"Tb4b4b4,
Te6edf3featureProjectionTff7b72: Ta5d6ff"EPSG:3857"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"Restoring persisted drawings, count:"Tb4b4b4, Te6edf3featuresTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4.Te6edf3addFeaturesTb4b4b4(Te6edf3featuresTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3rebuildMeasurementOverlaysTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to restore persisted drawings"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72delete Tff7b72thisTb4b4b4.Te6edf3_persistedDrawingsTb4b4b4;
Tb4b4b4}
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3checkOfflineMapTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadMBTilesListTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchPeersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchTelemetryMarkersTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Listen for websocket messages
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"message"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4)Tb4b4b4;
T8b949e// Check for query params to center map (overrides saved state)
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$routeTb4b4b4.Te6edf3queryTb4b4b4.Te6edf3lat Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3$routeTb4b4b4.Te6edf3queryTb4b4b4.Te6edf3lonTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3lat Tff7b72= Tffa657parseFloatTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$routeTb4b4b4.Te6edf3queryTb4b4b4.Te6edf3latTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3lon Tff7b72= Tffa657parseFloatTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$routeTb4b4b4.Te6edf3queryTb4b4b4.Te6edf3lonTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3zoom Tff7b72= Tffa657parseIntTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$routeTb4b4b4.Te6edf3queryTb4b4b4.Te6edf3zoom Tff7b72|| T79c0ff15Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tffa657isNaNTb4b4b4(Te6edf3latTb4b4b4) Tff7b72&& Tff7b72!Tffa657isNaNTb4b4b4(Te6edf3lonTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3setCenterTb4b4b4(Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3lonTb4b4b4, Te6edf3latTb4b4b4]Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3setZoomTb4b4b4(Te6edf3zoomTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
T8b949e// Listen for moveend to update coordinates in UI and save state
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"moveend"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3view Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentCenter Tff7b72= Te6edf3toLonLatTb4b4b4(Te6edf3viewTb4b4b4.Te6edf3getCenterTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentZoom Tff7b72= Te6edf3viewTb4b4b4.Te6edf3getZoomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3saveMapStateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// Check if onboarding tooltip should be shown
Tff7b72thisTb4b4b4.Te6edf3checkOnboardingTooltipTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Add click outside handler for search
Tffa657documentTb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff"click"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3handleClickOutsideTb4b4b4)Tb4b4b4;
T8b949e// Check screen size for mobile
Tff7b72thisTb4b4b4.Te6edf3checkScreenSizeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff"resize"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3checkScreenSizeTb4b4b4)Tb4b4b4;
T8b949e// Update info every few seconds
Tff7b72thisTb4b4b4.Te6edf3reloadInterval Tff7b72= Te6edf3setIntervalTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3fetchTelemetryMarkersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff30000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3beforeUnmountTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3map Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewportTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewportTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3removeEventListenerTb4b4b4(Ta5d6ff"contextmenu"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onContextMenuTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657documentTb4b4b4.Te6edf3removeEventListenerTb4b4b4(Ta5d6ff"click"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3handleGlobalClickTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3_saveStateTimerTb4b4b4) Tb4b4b4{
Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3_saveStateTimerTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3_saveStateTimer Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3_pendingSaveResolvers Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3_pendingSaveResolversTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3pending Tff7b72= Tff7b72thisTb4b4b4.Te6edf3_pendingSaveResolversTb4b4b4.Te6edf3sliceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3_pendingSaveResolvers Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3saveMapStateImmediateTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3thenTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3pendingTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3pTb4b4b4) Tb4b4b4=> Te6edf3pTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3reloadIntervalTb4b4b4) Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3reloadIntervalTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportIntervalTb4b4b4) Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportIntervalTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchTimeoutTb4b4b4) Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchTimeoutTb4b4b4)Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3removeEventListenerTb4b4b4(Ta5d6ff"click"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3handleClickOutsideTb4b4b4)Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3removeEventListenerTb4b4b4(Ta5d6ff"resize"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3checkScreenSizeTb4b4b4)Tb4b4b4;
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3offTb4b4b4(Ta5d6ff"message"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Te6edf3saveMapStateTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3_pendingSaveResolversTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3_pendingSaveResolvers Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3resolveTb4b4b4, Te6edf3rejectTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3_pendingSaveResolversTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3resolveTb4b4b4, Te6edf3reject Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3_saveStateTimerTb4b4b4) Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3_saveStateTimerTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3_saveStateTimer Tff7b72= Te6edf3setTimeoutTb4b4b4(Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3pending Tff7b72= Tff7b72thisTb4b4b4.Te6edf3_pendingSaveResolversTb4b4b4.Te6edf3sliceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3_pendingSaveResolvers Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3_saveStateTimer Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3saveMapStateImmediateTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3pendingTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3pTb4b4b4) Tb4b4b4=> Te6edf3pTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3pendingTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3pTb4b4b4) Tb4b4b4=> Te6edf3pTb4b4b4.Te6edf3rejectTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4, T79c0ff150Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3saveMapStateImmediateTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72let Te6edf3drawings Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3format Tff7b72= Tff7b72new Te6edf3GeoJSONTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3features Tff7b72= Tff7b72thisTb4b4b4.Te6edf3serializeFeaturesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4.Te6edf3getFeaturesTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3drawings Tff7b72= Te6edf3formatTb4b4b4.Te6edf3writeFeaturesTb4b4b4(Te6edf3featuresTb4b4b4, Tb4b4b4{
Te6edf3dataProjectionTff7b72: Ta5d6ff"EPSG:4326"Tb4b4b4,
Te6edf3featureProjectionTff7b72: Ta5d6ff"EPSG:3857"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3state Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(
Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3centerTff7b72: Tff7b72thisTb4b4b4.Te6edf3currentCenterTb4b4b4,
Te6edf3zoomTff7b72: Tff7b72thisTb4b4b4.Te6edf3currentZoomTb4b4b4,
Te6edf3offlineEnabledTff7b72: Tff7b72thisTb4b4b4.Te6edf3offlineEnabledTb4b4b4,
Te6edf3tileServerUrlTff7b72: Tff7b72thisTb4b4b4.Te6edf3tileServerUrlTb4b4b4,
Te6edf3drawingsTff7b72: Te6edf3drawingsTb4b4b4,
Te6edf3telemetryTff7b72: Tff7b72thisTb4b4b4.Te6edf3telemetryListTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3TileCacheTb4b4b4.Te6edf3setMapStateTb4b4b4(Ta5d6ff"last_view"Tb4b4b4, Te6edf3stateTb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"Map state persisted to cache, drawings size:"Tb4b4b4, Te6edf3drawings Tff7b72? Te6edf3drawingsTb4b4b4.Te6edf3length Tff7b72: T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save map state"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getConfigTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3config Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3configTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3offlineEnabled Tff7b72= Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_offline_enabledTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3cachingEnabled Tff7b72=
Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_tile_cache_enabled Tff7b72!== Tff7b72undefined Tff7b72? Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_tile_cache_enabled Tff7b72: Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mbtilesDir Tff7b72= Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_mbtiles_dir Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_tile_server_urlTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3tileServerUrl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_tile_server_urlTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_nominatim_api_urlTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3map_nominatim_api_urlTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to load config"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadMBTilesListTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/map/mbtiles"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mbtilesList Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to load MBTiles list"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3setActiveMBTilesTb4b4b4(Te6edf3filenameTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/map/mbtiles/active"Tb4b4b4, Tb4b4b4{ Te6edf3filename Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3checkOfflineMapTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadMBTilesListTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"Map source updated"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to set active map"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3deleteMBTilesTb4b4b4(Te6edf3filenameTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3confirmTb4b4b4(Ta5d6ff`Ta5d6ffAre you sure you want to delete Tffd700${Te6edf3filenameTffd700}Ta5d6ff?Ta5d6ff`Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/map/mbtiles/Tffd700${Te6edf3filenameTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadMBTilesListTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3metadata Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3metadataTb4b4b4.Te6edf3path Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3metadataTb4b4b4.Te6edf3pathTb4b4b4.Te6edf3endsWithTb4b4b4(Te6edf3filenameTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3checkOfflineMapTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"File deleted"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to delete file"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3saveMBTilesDirTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Tb4b4b4{
Te6edf3map_mbtiles_dirTff7b72: Tff7b72thisTb4b4b4.Te6edf3mbtilesDirTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"Storage directory saved"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadMBTilesListTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save directory"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3initMapTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// Patch canvas getContext to address performance warning
Tff7b72const Te6edf3originalGetContext Tff7b72= Te6edf3HTMLCanvasElementTb4b4b4.Te6edf3prototypeTb4b4b4.Te6edf3getContextTb4b4b4;
Te6edf3HTMLCanvasElementTb4b4b4.Te6edf3prototypeTb4b4b4.Te6edf3getContext Tff7b72= Tff7b72function Tb4b4b4(Te6edf3typeTb4b4b4, Te6edf3attributesTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3type Tff7b72=== Ta5d6ff"2d"Tb4b4b4) Tb4b4b4{
Te6edf3attributes Tff7b72= Te6edf3attributes Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Te6edf3attributesTb4b4b4.Te6edf3willReadFrequently Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3originalGetContextTb4b4b4.Te6edf3callTb4b4b4(Tff7b72thisTb4b4b4, Te6edf3typeTb4b4b4, Te6edf3attributesTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3defaultLat Tff7b72= Tffa657parseFloatTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3map_default_lat Tff7b72|| T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3defaultLon Tff7b72= Tffa657parseFloatTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3map_default_lon Tff7b72|| T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3defaultZoom Tff7b72= Tffa657parseIntTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3map_default_zoom Tff7b72|| T79c0ff2Tb4b4b4)Tb4b4b4;
T8b949e// Use saved state if available, otherwise use defaults
Tff7b72const Te6edf3startCenter Tff7b72=
Tff7b72thisTb4b4b4.Te6edf3currentCenterTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72!== T79c0ff0 Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3currentCenterTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72!== T79c0ff0
Tff7b72? Te6edf3fromLonLatTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3currentCenterTb4b4b4)
Tff7b72: Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3defaultLonTb4b4b4, Te6edf3defaultLatTb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3startZoom Tff7b72= Tff7b72thisTb4b4b4.Te6edf3currentZoom Tff7b72!== T79c0ff2 Tff7b72? Tff7b72thisTb4b4b4.Te6edf3currentZoom Tff7b72: Te6edf3defaultZoomTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3map Tff7b72= Tff7b72new Tffa657MapTb4b4b4(Tb4b4b4{
Te6edf3targetTff7b72: Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3mapContainerTb4b4b4,
Te6edf3layersTff7b72: Tb4b4b4[
Tff7b72new Te6edf3TileLayerTb4b4b4(Tb4b4b4{
Te6edf3sourceTff7b72: Tff7b72thisTb4b4b4.Te6edf3getTileSourceTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Te6edf3viewTff7b72: Tff7b72new Te6edf3ViewTb4b4b4(Tb4b4b4{
Te6edf3centerTff7b72: Te6edf3startCenterTb4b4b4,
Te6edf3zoomTff7b72: Te6edf3startZoomTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3controlsTff7b72: Te6edf3defaultControlsTb4b4b4(Tb4b4b4{
Te6edf3attributionTff7b72: Tff7b72falseTb4b4b4,
Te6edf3rotateTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
T8b949e// setup drawing layer
Tff7b72thisTb4b4b4.Te6edf3drawSource Tff7b72= Tff7b72new Te6edf3VectorSourceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawLayer Tff7b72= Tff7b72new Te6edf3VectorLayerTb4b4b4(Tb4b4b4{
Te6edf3sourceTff7b72: Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4,
Te6edf3styleTff7b72: Tb4b4b4(Te6edf3featureTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3type Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"type"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3geometry Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getGeometryTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3geomType Tff7b72= Te6edf3geometry Tff7b72? Te6edf3geometryTb4b4b4.Te6edf3getTypeTb4b4b4(Tb4b4b4) Tff7b72: Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3type Tff7b72=== Ta5d6ff"note" Tff7b72|| Te6edf3geomType Tff7b72=== Ta5d6ff"Point"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isNote Tff7b72= Te6edf3type Tff7b72=== Ta5d6ff"note"Tb4b4b4;
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3createMarkerStyleTb4b4b4(Tb4b4b4{
Te6edf3iconColorTff7b72: Te6edf3isNote Tff7b72? Ta5d6ff"#f59e0b" Tff7b72: Ta5d6ff"#3b82f6"Tb4b4b4,
Te6edf3bgColorTff7b72: Ta5d6ff"#ffffff"Tb4b4b4,
Te6edf3labelTff7b72: Te6edf3isNote Tff7b72&& Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"note"Tb4b4b4) Tff7b72? Ta5d6ff"Note" Tff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3isStaleTff7b72: Tff7b72falseTb4b4b4,
Te6edf3iconPathTff7b72: Te6edf3isNote
Tff7b72? Ta5d6ff"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6z"
Tff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72new Te6edf3StyleTb4b4b4(Tb4b4b4{
Te6edf3fillTff7b72: Tff7b72new Te6edf3FillTb4b4b4(Tb4b4b4{
Te6edf3colorTff7b72: Ta5d6ff"rgba(59, 130, 246, 0.2)"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3strokeTff7b72: Tff7b72new Te6edf3StrokeTb4b4b4(Tb4b4b4{
Te6edf3colorTff7b72: Ta5d6ff"#3b82f6"Tb4b4b4,
Te6edf3widthTff7b72: T79c0ff3Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3imageTff7b72: Tff7b72new Te6edf3CircleStyleTb4b4b4(Tb4b4b4{
Te6edf3radiusTff7b72: T79c0ff7Tb4b4b4,
Te6edf3fillTff7b72: Tff7b72new Te6edf3FillTb4b4b4(Tb4b4b4{
Te6edf3colorTff7b72: Ta5d6ff"#3b82f6"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3zIndexTff7b72: T79c0ff50Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3addLayerTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3drawLayerTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3attachDrawPersistenceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3noteOverlay Tff7b72= Tff7b72new Te6edf3OverlayTb4b4b4(Tb4b4b4{
Te6edf3elementTff7b72: Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3noteOverlayElementTb4b4b4,
Te6edf3autoPanTff7b72: Tb4b4b4{
Te6edf3animationTff7b72: Tb4b4b4{
Te6edf3durationTff7b72: T79c0ff250Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3addOverlayTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3noteOverlayTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3modify Tff7b72= Tff7b72new Te6edf3ModifyTb4b4b4(Tb4b4b4{ Te6edf3sourceTff7b72: Tff7b72thisTb4b4b4.Te6edf3drawSource Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3modifyTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"modifystart"Tb4b4b4, Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3feats Tff7b72= Tb4b4b4(Te6edf3eTb4b4b4.Te6edf3features Tff7b72&& Te6edf3eTb4b4b4.Te6edf3featuresTb4b4b4.Te6edf3getArrayTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3getFeaturesTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getArrayTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3featsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3fTb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3clearMeasurementOverlayTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3modifyTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"modifyend"Tb4b4b4, Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3feats Tff7b72= Tb4b4b4(Te6edf3eTb4b4b4.Te6edf3features Tff7b72&& Te6edf3eTb4b4b4.Te6edf3featuresTb4b4b4.Te6edf3getArrayTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3getFeaturesTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getArrayTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3featsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3fTb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3finalizeMeasurementOverlayTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3saveMapStateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3addInteractionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3modifyTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3select Tff7b72= Tff7b72new Te6edf3SelectTb4b4b4(Tb4b4b4{
Te6edf3layersTff7b72: Tb4b4b4[Tff7b72thisTb4b4b4.Te6edf3drawLayerTb4b4b4]Tb4b4b4,
Te6edf3hitToleranceTff7b72: T79c0ff15Tb4b4b4, T8b949e// High tolerance for touch/offgrid
Te6edf3styleTff7b72: Tff7b72nullTb4b4b4, T8b949e// Keep original feature style
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"select"Tb4b4b4, Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedFeature Tff7b72= Te6edf3eTb4b4b4.Te6edf3selectedTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72|| Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3addInteractionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3translate Tff7b72= Tff7b72new Te6edf3TranslateTb4b4b4(Tb4b4b4{
Te6edf3featuresTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3getFeaturesTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3layersTff7b72: Tb4b4b4[Tff7b72thisTb4b4b4.Te6edf3drawLayerTb4b4b4]Tb4b4b4, T8b949e// Only move drawing layer items, not telemetry
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3translateTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"translateend"Tb4b4b4, Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3feats Tff7b72= Tb4b4b4(Te6edf3eTb4b4b4.Te6edf3features Tff7b72&& Te6edf3eTb4b4b4.Te6edf3featuresTb4b4b4.Te6edf3getArrayTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3getFeaturesTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getArrayTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3featsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3fTb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3finalizeMeasurementOverlayTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3saveMapStateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3addInteractionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3translateTb4b4b4)Tb4b4b4;
T8b949e// Default to Select tool
Tff7b72thisTb4b4b4.Te6edf3drawType Tff7b72= Ta5d6ff"Select"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3translateTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3modifyTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3snap Tff7b72= Tff7b72new Te6edf3SnapTb4b4b4(Tb4b4b4{ Te6edf3sourceTff7b72: Tff7b72thisTb4b4b4.Te6edf3drawSource Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3addInteractionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3snapTb4b4b4)Tb4b4b4;
T8b949e// Right-click context menu
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewportTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff"contextmenu"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onContextMenuTb4b4b4)Tb4b4b4;
T8b949e// setup telemetry markers
Tff7b72thisTb4b4b4.Te6edf3markerSource Tff7b72= Tff7b72new Te6edf3VectorSourceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3markerLayer Tff7b72= Tff7b72new Te6edf3VectorLayerTb4b4b4(Tb4b4b4{
Te6edf3sourceTff7b72: Tff7b72thisTb4b4b4.Te6edf3markerSourceTb4b4b4,
Te6edf3styleTff7b72: Tb4b4b4(Te6edf3featureTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3t Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"telemetry"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3peer Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"peer"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3displayName Tff7b72= Te6edf3peerTff7b72?Tb4b4b4.Te6edf3display_name Tff7b72|| Te6edf3tTb4b4b4.Te6edf3destination_hashTb4b4b4.Te6edf3substringTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff8Tb4b4b4)Tb4b4b4;
T8b949e// Calculate staleness
Tff7b72const Te6edf3now Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3updatedAt Tff7b72= Te6edf3tTb4b4b4.Te6edf3updated_at
Tff7b72? Tff7b72new Tffa657DateTb4b4b4(Te6edf3tTb4b4b4.Te6edf3updated_atTb4b4b4)Tb4b4b4.Te6edf3getTimeTb4b4b4(Tb4b4b4)
Tff7b72: Te6edf3tTb4b4b4.Te6edf3timestamp
Tff7b72? Te6edf3tTb4b4b4.Te6edf3timestamp Tff7b72* T79c0ff1000
Tff7b72: Te6edf3nowTb4b4b4;
Tff7b72const Te6edf3isStale Tff7b72= Te6edf3now Tff7b72- Te6edf3updatedAt Tff7b72> T79c0ff10 Tff7b72* T79c0ff60 Tff7b72* T79c0ff1000Tb4b4b4;
Tff7b72let Te6edf3iconColor Tff7b72= Ta5d6ff"#2563eb"Tb4b4b4;
Tff7b72let Te6edf3bgColor Tff7b72= Ta5d6ff"#ffffff"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3peerTff7b72?Tb4b4b4.Te6edf3lxmf_user_iconTb4b4b4) Tb4b4b4{
Te6edf3iconColor Tff7b72= Te6edf3peerTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3foreground_colour Tff7b72|| Te6edf3iconColorTb4b4b4;
Te6edf3bgColor Tff7b72= Te6edf3peerTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3background_colour Tff7b72|| Te6edf3bgColorTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3createMarkerStyleTb4b4b4(Tb4b4b4{
Te6edf3iconColorTb4b4b4,
Te6edf3bgColorTb4b4b4,
Te6edf3labelTff7b72: Te6edf3displayNameTb4b4b4,
Te6edf3isStaleTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3zIndexTff7b72: T79c0ff100Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3addLayerTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3markerLayerTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"pointermove"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3handleMapPointerMoveTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"click"Tb4b4b4, Tb4b4b4(Te6edf3evtTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3handleMapClickTb4b4b4(Te6edf3evtTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3feature Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3forEachFeatureAtPixelTb4b4b4(Te6edf3evtTb4b4b4.Te6edf3pixelTb4b4b4, Tb4b4b4(Te6edf3fTb4b4b4) Tb4b4b4=> Te6edf3fTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3feature Tff7b72&& Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"telemetry"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3onMarkerClickTb4b4b4(Te6edf3featureTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedMarker Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
T8b949e// Deselect drawing if clicking empty space
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3feature Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3getFeaturesTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedFeature Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentCenter Tff7b72= Tb4b4b4[Te6edf3defaultLonTb4b4b4, Te6edf3defaultLatTb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentZoom Tff7b72= Te6edf3defaultZoomTb4b4b4;
T8b949e// Setup dragBox for export
Tff7b72thisTb4b4b4.Te6edf3dragBox Tff7b72= Tff7b72new Te6edf3DragBoxTb4b4b4(Tb4b4b4{
Te6edf3conditionTff7b72: Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3isExportModeTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3dragBoxTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"boxend"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3extent Tff7b72= Tff7b72thisTb4b4b4.Te6edf3dragBoxTb4b4b4.Te6edf3getGeometryTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getExtentTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3min Tff7b72= Te6edf3toLonLatTb4b4b4(Tb4b4b4[Te6edf3extentTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Te6edf3extentTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3max Tff7b72= Te6edf3toLonLatTb4b4b4(Tb4b4b4[Te6edf3extentTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4, Te6edf3extentTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedBbox Tff7b72= Tb4b4b4[Te6edf3minTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Te6edf3minTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4, Te6edf3maxTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Te6edf3maxTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3exportMinZoom Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getZoomTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3exportMaxZoom Tff7b72= Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportMinZoom Tff7b72+ T79c0ff3Tb4b4b4, T79c0ff18Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3addInteractionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3dragBoxTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isMapLoaded Tff7b72= Tff7b72trueTb4b4b4;
T8b949e// Close context menu when clicking elsewhere
Tffa657documentTb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff"click"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3handleGlobalClickTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isLocalUrlTb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3urlTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3urlObj Tff7b72= Tff7b72new Te6edf3URLTb4b4b4(Te6edf3urlTb4b4b4, Tffa657windowTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3originTb4b4b4)Tb4b4b4;
Tff7b72return Tb4b4b4(
Te6edf3urlObjTb4b4b4.Te6edf3hostname Tff7b72=== Ta5d6ff"localhost" Tff7b72||
Te6edf3urlObjTb4b4b4.Te6edf3hostname Tff7b72=== Ta5d6ff"127.0.0.1" Tff7b72||
Te6edf3urlObjTb4b4b4.Te6edf3hostname Tff7b72=== Ta5d6ff"::1" Tff7b72||
Te6edf3urlObjTb4b4b4.Te6edf3hostnameTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"192.168."Tb4b4b4) Tff7b72||
Te6edf3urlObjTb4b4b4.Te6edf3hostnameTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"10."Tb4b4b4) Tff7b72||
Te6edf3urlObjTb4b4b4.Te6edf3hostnameTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"172."Tb4b4b4) Tff7b72||
Te6edf3urlObjTb4b4b4.Te6edf3hostnameTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff".local"Tb4b4b4) Tff7b72||
Te6edf3urlTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"/"Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return Te6edf3urlTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"/"Tb4b4b4) Tff7b72|| Te6edf3urlTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"./"Tb4b4b4) Tff7b72|| Tff7b72!Te6edf3urlTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"http"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3isDefaultOnlineUrlTb4b4b4(Te6edf3urlTb4b4b4, Te6edf3typeTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3urlTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3type Tff7b72=== Ta5d6ff"tile"Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3urlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"tile.openstreetmap.org"Tb4b4b4) Tff7b72|| Te6edf3urlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"openstreetmap.org"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3type Tff7b72=== Ta5d6ff"nominatim"Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3urlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"nominatim.openstreetmap.org"Tb4b4b4) Tff7b72|| Te6edf3urlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"openstreetmap.org"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3checkApiConnectionTb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3url Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isLocalUrlTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72let Te6edf3testUrl Tff7b72= Te6edf3urlTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff"/"Tb4b4b4) Tff7b72? Te6edf3urlTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Tff7b72-T79c0ff1Tb4b4b4) Tff7b72: Te6edf3urlTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3testUrlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"{z}"Tb4b4b4) Tff7b72|| Te6edf3testUrlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"{x}"Tb4b4b4) Tff7b72|| Te6edf3testUrlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"{y}"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3testUrl Tff7b72= Te6edf3testUrlTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"{z}"Tb4b4b4, Ta5d6ff"0"Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"{x}"Tb4b4b4, Ta5d6ff"0"Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"{y}"Tb4b4b4, Ta5d6ff"0"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3controller Tff7b72= Tff7b72new Te6edf3AbortControllerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3timeoutId Tff7b72= Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3controllerTb4b4b4.Te6edf3abortTb4b4b4(Tb4b4b4)Tb4b4b4, T79c0ff3000Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Te6edf3fetchTb4b4b4(Te6edf3testUrlTb4b4b4, Tb4b4b4{
Te6edf3methodTff7b72: Ta5d6ff"HEAD"Tb4b4b4,
Te6edf3signalTff7b72: Te6edf3controllerTb4b4b4.Te6edf3signalTb4b4b4,
Te6edf3headersTff7b72: Tb4b4b4{
Ta5d6ff"User-Agent"Tff7b72: Ta5d6ff"ReticulumMeshChatX/1.0"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3clearTimeoutTb4b4b4(Te6edf3timeoutIdTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3responseTb4b4b4.Te6edf3ok Tff7b72|| Te6edf3responseTb4b4b4.Te6edf3status Tff7b72=== T79c0ff405 Tff7b72|| Te6edf3responseTb4b4b4.Te6edf3status Tff7b72=== T79c0ff404Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3getTileSourceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isOffline Tff7b72= Tff7b72thisTb4b4b4.Te6edf3offlineEnabledTb4b4b4;
Tff7b72const Te6edf3defaultTileUrl Tff7b72= Ta5d6ff"https://tile.openstreetmap.org/{z}/{x}/{y}.png"Tb4b4b4;
Tff7b72const Te6edf3customTileUrl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3tileServerUrl Tff7b72|| Te6edf3defaultTileUrlTb4b4b4;
Tff7b72const Te6edf3isCustomLocal Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isLocalUrlTb4b4b4(Te6edf3customTileUrlTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isDefaultOnline Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isDefaultOnlineUrlTb4b4b4(Te6edf3customTileUrlTb4b4b4, Ta5d6ff"tile"Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3tileUrlTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3isOfflineTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3isCustomLocal Tff7b72|| Tb4b4b4(Tff7b72!Te6edf3isDefaultOnline Tff7b72&& Te6edf3customTileUrl Tff7b72!== Te6edf3defaultTileUrlTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3tileUrl Tff7b72= Te6edf3customTileUrlTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3tileUrl Tff7b72= Ta5d6ff"/api/v1/map/tiles/{z}/{x}/{y}.png"Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3tileUrl Tff7b72= Te6edf3customTileUrlTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3source Tff7b72= Tff7b72new Te6edf3XYZTb4b4b4(Tb4b4b4{
Te6edf3urlTff7b72: Te6edf3tileUrlTb4b4b4,
Te6edf3crossOriginTff7b72: Ta5d6ff"anonymous"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3originalTileLoadFunction Tff7b72= Te6edf3sourceTb4b4b4.Te6edf3getTileLoadFunctionTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3isOfflineTb4b4b4) Tb4b4b4{
Te6edf3sourceTb4b4b4.Te6edf3setTileLoadFunctionTb4b4b4(Tff7b72async Tb4b4b4(Te6edf3tileTb4b4b4, Te6edf3srcTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Te6edf3fetchTb4b4b4(Te6edf3srcTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3responseTb4b4b4.Te6edf3okTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3responseTb4b4b4.Te6edf3status Tff7b72=== T79c0ff404Tb4b4b4) Tb4b4b4{
Te6edf3tileTb4b4b4.Te6edf3setStateTb4b4b4(T79c0ff3Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff`Ta5d6ffHTTP Tffd700${Te6edf3responseTb4b4b4.Te6edf3statusTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3blob Tff7b72= Tff7b72await Te6edf3responseTb4b4b4.Te6edf3blobTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3url Tff7b72= Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;
Te6edf3tileTb4b4b4.Te6edf3getImageTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3src Tff7b72= Te6edf3urlTb4b4b4;
T8b949e// Cleanup to prevent memory leaks
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4, T79c0ff10000Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3tileTb4b4b4.Te6edf3setStateTb4b4b4(T79c0ff3Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3sourceTb4b4b4.Te6edf3setTileLoadFunctionTb4b4b4(Tff7b72async Tb4b4b4(Te6edf3tileTb4b4b4, Te6edf3srcTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3cachingEnabledTb4b4b4) Tb4b4b4{
Te6edf3originalTileLoadFunctionTb4b4b4(Te6edf3tileTb4b4b4, Te6edf3srcTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3cached Tff7b72= Tff7b72await Te6edf3TileCacheTb4b4b4.Te6edf3getTileTb4b4b4(Te6edf3srcTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3cachedTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3url Tff7b72= Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3cachedTb4b4b4)Tb4b4b4;
Te6edf3tileTb4b4b4.Te6edf3getImageTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3src Tff7b72= Te6edf3urlTb4b4b4;
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4, T79c0ff10000Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Te6edf3fetchTb4b4b4(Te6edf3srcTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3responseTb4b4b4.Te6edf3okTb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff`Ta5d6ffHTTP Tffd700${Te6edf3responseTb4b4b4.Te6edf3statusTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3blob Tff7b72= Tff7b72await Te6edf3responseTb4b4b4.Te6edf3blobTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3url Tff7b72= Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;
Te6edf3tileTb4b4b4.Te6edf3getImageTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3src Tff7b72= Te6edf3urlTb4b4b4;
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4, T79c0ff10000Tb4b4b4)Tb4b4b4;
T8b949e// Background cache write to avoid blocking UI
Te6edf3TileCacheTb4b4b4.Te6edf3setTileTb4b4b4(Te6edf3srcTb4b4b4, Te6edf3blobTb4b4b4)Tb4b4b4.Tff7b72catchTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3originalTileLoadFunctionTb4b4b4(Te6edf3tileTb4b4b4, Te6edf3srcTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3sourceTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3checkOfflineMapTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/map/offline"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3responseTb4b4b4.Te6edf3data Tff7b72&& Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3loaded Tff7b72!== Tff7b72false Tff7b72&& Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3metadata Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hasOfflineMap Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3offlineEnabledTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3updateMapSourceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hasOfflineMap Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3metadata Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3offlineEnabledTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3offlineEnabled Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3updateMapSourceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hasOfflineMap Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3metadata Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3offlineEnabledTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3offlineEnabled Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3updateMapSourceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3updateMapSourceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3layers Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getLayersTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Find and replace the tile layer (first layer usually)
T8b949e// or just clear and re-add everything correctly
Te6edf3layersTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// 1. Tile layer
Te6edf3layersTb4b4b4.Te6edf3pushTb4b4b4(
Tff7b72new Te6edf3TileLayerTb4b4b4(Tb4b4b4{
Te6edf3sourceTff7b72: Tff7b72thisTb4b4b4.Te6edf3getTileSourceTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
T8b949e// 2. Draw layer
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3drawLayerTb4b4b4) Tb4b4b4{
Te6edf3layersTb4b4b4.Te6edf3pushTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3drawLayerTb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// 3. Marker layer
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3markerLayerTb4b4b4) Tb4b4b4{
Te6edf3layersTb4b4b4.Te6edf3pushTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3markerLayerTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3toggleOfflineTb4b4b4(Te6edf3enabledTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3enabled Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3hasOfflineMapTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.no_map_loaded"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3enabledTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3defaultTileUrl Tff7b72= Ta5d6ff"https://tile.openstreetmap.org/{z}/{x}/{y}.png"Tb4b4b4;
Tff7b72const Te6edf3defaultNominatimUrl Tff7b72= Ta5d6ff"https://nominatim.openstreetmap.org"Tb4b4b4;
Tff7b72const Te6edf3isCustomTileLocal Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isLocalUrlTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3tileServerUrlTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isDefaultTileOnline Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isDefaultOnlineUrlTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3tileServerUrlTb4b4b4, Ta5d6ff"tile"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hasCustomTile Tff7b72= Tff7b72thisTb4b4b4.Te6edf3tileServerUrl Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3tileServerUrl Tff7b72!== Te6edf3defaultTileUrlTb4b4b4;
Tff7b72const Te6edf3isCustomNominatimLocal Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isLocalUrlTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isDefaultNominatimOnline Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isDefaultOnlineUrlTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4, Ta5d6ff"nominatim"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hasCustomNominatim Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrl Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrl Tff7b72!== Te6edf3defaultNominatimUrlTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3hasCustomTile Tff7b72&& Tff7b72!Te6edf3isCustomTileLocal Tff7b72&& Tff7b72!Te6edf3isDefaultTileOnlineTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isAccessible Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3checkApiConnectionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3tileServerUrlTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isAccessibleTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.custom_tile_server_unavailable"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3hasCustomNominatim Tff7b72&& Tff7b72!Te6edf3isCustomNominatimLocal Tff7b72&& Tff7b72!Te6edf3isDefaultNominatimOnlineTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isAccessible Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3checkApiConnectionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isAccessibleTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.custom_nominatim_unavailable"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3offlineEnabled Tff7b72= Te6edf3enabledTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3enabledTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isExportMode Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3clearSearchTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3updateMapSourceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3saveMapStateTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Persist setting
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Tb4b4b4{
Te6edf3map_offline_enabledTff7b72: Te6edf3enabledTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save offline setting"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3toggleCachingTb4b4b4(Te6edf3enabledTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3cachingEnabled Tff7b72= Te6edf3enabledTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Tb4b4b4{
Te6edf3map_tile_cache_enabledTff7b72: Te6edf3enabledTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save caching setting"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3toggleExportModeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isExportMode Tff7b72= Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isExportModeTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isExportModeTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedBbox Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3cancelExportTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedBbox Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isExportMode Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3cancelActiveExportTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3exportIdTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3exportStatus Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/map/export/Tffd700${Tff7b72thisTb4b4b4.Te6edf3exportIdTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3exportStatus Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3exportId Tff7b72= Tff7b72nullTb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"Export cancelled"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to cancel export"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3startExportTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedBboxTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isExporting Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/map/export"Tb4b4b4, Tb4b4b4{
Te6edf3bboxTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectedBboxTb4b4b4,
Te6edf3min_zoomTff7b72: Tff7b72thisTb4b4b4.Te6edf3exportMinZoomTb4b4b4,
Te6edf3max_zoomTff7b72: Tff7b72thisTb4b4b4.Te6edf3exportMaxZoomTb4b4b4,
Te6edf3nameTff7b72: Ta5d6ff`Ta5d6ffMap Export Tffd700${Tff7b72new Tffa657DateTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toLocaleStringTb4b4b4(Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3exportId Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3export_idTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isExportMode Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedBbox Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pollExportStatusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to start export"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isExporting Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3pollExportStatusTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportIntervalTb4b4b4) Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportIntervalTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3exportInterval Tff7b72= Te6edf3setIntervalTb4b4b4(Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/map/export/Tffd700${Tff7b72thisTb4b4b4.Te6edf3exportIdTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3exportStatus Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"completed" Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3exportStatusTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"failed"Tb4b4b4) Tb4b4b4{
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportIntervalTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isExporting Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3exportIntervalTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isExporting Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4, T79c0ff2000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3lonToTileTb4b4b4(Te6edf3lonTb4b4b4, Te6edf3zoomTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tb4b4b4(Tb4b4b4(Te6edf3lon Tff7b72+ T79c0ff180Tb4b4b4) Tff7b72/ T79c0ff360Tb4b4b4) Tff7b72* Tffa657MathTb4b4b4.Te6edf3powTb4b4b4(T79c0ff2Tb4b4b4, Te6edf3zoomTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3latToTileTb4b4b4(Te6edf3latTb4b4b4, Te6edf3zoomTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(
Tb4b4b4(Tb4b4b4(T79c0ff1 Tff7b72- Tffa657MathTb4b4b4.Te6edf3logTb4b4b4(Tffa657MathTb4b4b4.Te6edf3tanTb4b4b4(Tb4b4b4(Te6edf3lat Tff7b72* Tffa657MathTb4b4b4.Te6edf3PITb4b4b4) Tff7b72/ T79c0ff180Tb4b4b4) Tff7b72+ T79c0ff1 Tff7b72/ Tffa657MathTb4b4b4.Te6edf3cosTb4b4b4(Tb4b4b4(Te6edf3lat Tff7b72* Tffa657MathTb4b4b4.Te6edf3PITb4b4b4) Tff7b72/ T79c0ff180Tb4b4b4)Tb4b4b4) Tff7b72/ Tffa657MathTb4b4b4.Te6edf3PITb4b4b4) Tff7b72/ T79c0ff2Tb4b4b4) Tff7b72*
Tffa657MathTb4b4b4.Te6edf3powTb4b4b4(T79c0ff2Tb4b4b4, Te6edf3zoomTb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onFileSelectedTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3file Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3filesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fileTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fileTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff".mbtiles"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Please select an .mbtiles file"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3isUploading Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72const Te6edf3formData Tff7b72= Tff7b72new Te6edf3FormDataTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3formDataTb4b4b4.Te6edf3appendTb4b4b4(Ta5d6ff"file"Tb4b4b4, Te6edf3fileTb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/map/offline"Tb4b4b4, Te6edf3formDataTb4b4b4, Tb4b4b4{
Te6edf3headersTff7b72: Tb4b4b4{
Ta5d6ff"Content-Type"Tff7b72: Ta5d6ff"multipart/form-data"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3metadata Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3metadataTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hasOfflineMap Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3offlineEnabled Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadMBTilesListTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3checkOfflineMapTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3updateMapSourceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.upload_success"Tb4b4b4)Tb4b4b4)Tb4b4b4;
T8b949e// If the map has bounds, we might want to fit to them
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3metadataTb4b4b4.Te6edf3boundsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3bounds Tff7b72= Tff7b72thisTb4b4b4.Te6edf3metadataTb4b4b4.Te6edf3boundsTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff","Tb4b4b4)Tb4b4b4.Te6edf3mapTb4b4b4(Tffa657parseFloatTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3boundsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff4Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3extent Tff7b72= Tb4b4b4[Tb4b4b4...Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3boundsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Te6edf3boundsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4]Tb4b4b4)Tb4b4b4, Tb4b4b4...Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3boundsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4, Te6edf3boundsTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4]Tb4b4b4)Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3fitTb4b4b4(Te6edf3extentTb4b4b4, Tb4b4b4{ Te6edf3paddingTff7b72: Tb4b4b4[T79c0ff20Tb4b4b4, T79c0ff20Tb4b4b4, T79c0ff20Tb4b4b4, T79c0ff20Tb4b4b4] Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3error Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3error Tff7b72|| Te6edf3eTb4b4b4.Te6edf3messageTb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.upload_failed"Tb4b4b4) Tff7b72+ Ta5d6ff": " Tff7b72+ Te6edf3errorTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isUploading Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3value Tff7b72= Ta5d6ff""Tb4b4b4; T8b949e// Reset input
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3setAsDefaultViewTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3view Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3center Tff7b72= Te6edf3toLonLatTb4b4b4(Te6edf3viewTb4b4b4.Te6edf3getCenterTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3zoom Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3viewTb4b4b4.Te6edf3getZoomTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Tb4b4b4{
Te6edf3map_default_latTff7b72: Te6edf3centerTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4,
Te6edf3map_default_lonTff7b72: Te6edf3centerTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4,
Te6edf3map_default_zoomTff7b72: Te6edf3zoomTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"Default view saved"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save default view"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3clearCacheTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Te6edf3TileCacheTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.cache_cleared"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to clear cache"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3saveTileServerUrlTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Tb4b4b4{
Te6edf3map_tile_server_urlTff7b72: Tff7b72thisTb4b4b4.Te6edf3tileServerUrlTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3updateMapSourceTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.tile_server_saved"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3saveMapStateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save tile server URL"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3setTileServerTb4b4b4(Te6edf3typeTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3type Tff7b72=== Ta5d6ff"osm"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3tileServerUrl Tff7b72= Ta5d6ff"https://tile.openstreetmap.org/{z}/{x}/{y}.png"Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3saveTileServerUrlTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3saveNominatimApiUrlTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4, Tb4b4b4{
Te6edf3map_nominatim_api_urlTff7b72: Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.nominatim_api_saved"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save Nominatim API URL"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3checkOnboardingTooltipTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hasSeenOnboarding Tff7b72= Te6edf3localStorageTb4b4b4.Te6edf3getItemTb4b4b4(Ta5d6ff"map_onboarding_seen"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hasSeenOnboarding Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3offlineEnabledTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3showOnboardingTooltip Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3positionOnboardingTooltipTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3positionOnboardingTooltipTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3exportButton Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3tooltipElementTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3exportButton Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3exportButtonTb4b4b4;
Tff7b72const Te6edf3tooltip Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3tooltipElementTb4b4b4;
Tff7b72const Te6edf3buttonRect Tff7b72= Te6edf3exportButtonTb4b4b4.Te6edf3getBoundingClientRectTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3tooltipRect Tff7b72= Te6edf3tooltipTb4b4b4.Te6edf3getBoundingClientRectTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isMobile Tff7b72= Tffa657windowTb4b4b4.Te6edf3innerWidth Tff7b72< T79c0ff640Tb4b4b4;
Tff7b72let Te6edf3tooltipLeftTb4b4b4, Te6edf3tooltipTopTb4b4b4;
Tff7b72let Te6edf3tooltipAboveButton Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3isMobileTb4b4b4) Tb4b4b4{
Te6edf3tooltipLeft Tff7b72= Tffa657windowTb4b4b4.Te6edf3innerWidth Tff7b72/ T79c0ff2 Tff7b72- Te6edf3tooltipRectTb4b4b4.Te6edf3width Tff7b72/ T79c0ff2Tb4b4b4;
Te6edf3tooltipTop Tff7b72= Te6edf3buttonRectTb4b4b4.Te6edf3top Tff7b72- Te6edf3tooltipRectTb4b4b4.Te6edf3height Tff7b72- T79c0ff20Tb4b4b4;
Te6edf3tooltipAboveButton Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3tooltipTop Tff7b72< T79c0ff10Tb4b4b4) Tb4b4b4{
Te6edf3tooltipTop Tff7b72= Te6edf3buttonRectTb4b4b4.Te6edf3bottom Tff7b72+ T79c0ff20Tb4b4b4;
Te6edf3tooltipAboveButton Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3tooltipLeft Tff7b72= Te6edf3buttonRectTb4b4b4.Te6edf3left Tff7b72- Te6edf3tooltipRectTb4b4b4.Te6edf3width Tff7b72- T79c0ff20Tb4b4b4;
Te6edf3tooltipTop Tff7b72= Te6edf3buttonRectTb4b4b4.Te6edf3top Tff7b72+ Te6edf3buttonRectTb4b4b4.Te6edf3height Tff7b72/ T79c0ff2 Tff7b72- Te6edf3tooltipRectTb4b4b4.Te6edf3height Tff7b72/ T79c0ff2Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3tooltipTop Tff7b72< T79c0ff10Tb4b4b4) Te6edf3tooltipTop Tff7b72= T79c0ff10Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3tooltipLeft Tff7b72< T79c0ff10Tb4b4b4) Te6edf3tooltipLeft Tff7b72= T79c0ff10Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3tooltipLeft Tff7b72+ Te6edf3tooltipRectTb4b4b4.Te6edf3width Tff7b72> Tffa657windowTb4b4b4.Te6edf3innerWidth Tff7b72- T79c0ff10Tb4b4b4) Tb4b4b4{
Te6edf3tooltipLeft Tff7b72= Tffa657windowTb4b4b4.Te6edf3innerWidth Tff7b72- Te6edf3tooltipRectTb4b4b4.Te6edf3width Tff7b72- T79c0ff10Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3tooltipStyle Tff7b72= Tb4b4b4{
Te6edf3leftTff7b72: Ta5d6ff`Tffd700${Te6edf3tooltipLeftTffd700}Ta5d6ffpxTa5d6ff`Tb4b4b4,
Te6edf3topTff7b72: Ta5d6ff`Tffd700${Te6edf3tooltipTopTffd700}Ta5d6ffpxTa5d6ff`Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3buttonCenterY Tff7b72= Te6edf3buttonRectTb4b4b4.Te6edf3top Tff7b72+ Te6edf3buttonRectTb4b4b4.Te6edf3height Tff7b72/ T79c0ff2Tb4b4b4;
Tff7b72const Te6edf3tooltipCenterX Tff7b72= Te6edf3tooltipLeft Tff7b72+ Te6edf3tooltipRectTb4b4b4.Te6edf3width Tff7b72/ T79c0ff2Tb4b4b4;
Tff7b72const Te6edf3tooltipCenterY Tff7b72= Te6edf3tooltipTop Tff7b72+ Te6edf3tooltipRectTb4b4b4.Te6edf3height Tff7b72/ T79c0ff2Tb4b4b4;
Tff7b72const Te6edf3arrowStartX Tff7b72= Te6edf3isMobile Tff7b72? Te6edf3tooltipCenterX Tff7b72: Te6edf3tooltipLeft Tff7b72+ Te6edf3tooltipRectTb4b4b4.Te6edf3widthTb4b4b4;
Tff7b72const Te6edf3arrowStartY Tff7b72= Te6edf3isMobile
Tff7b72? Te6edf3tooltipAboveButton
Tff7b72? Te6edf3tooltipTop Tff7b72+ Te6edf3tooltipRectTb4b4b4.Te6edf3height
Tff7b72: Te6edf3tooltipTop
Tff7b72: Te6edf3tooltipCenterYTb4b4b4;
Tff7b72const Te6edf3arrowEndX Tff7b72= Te6edf3buttonRectTb4b4b4.Te6edf3left Tff7b72+ Te6edf3buttonRectTb4b4b4.Te6edf3width Tff7b72* T79c0ff0.25Tb4b4b4;
Tff7b72const Te6edf3arrowEndY Tff7b72= Te6edf3buttonCenterYTb4b4b4;
Tff7b72const Te6edf3minX Tff7b72= Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(Te6edf3arrowStartXTb4b4b4, Te6edf3arrowEndXTb4b4b4) Tff7b72- T79c0ff20Tb4b4b4;
Tff7b72const Te6edf3maxX Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(Te6edf3arrowStartXTb4b4b4, Te6edf3arrowEndXTb4b4b4) Tff7b72+ T79c0ff20Tb4b4b4;
Tff7b72const Te6edf3minY Tff7b72= Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(Te6edf3arrowStartYTb4b4b4, Te6edf3arrowEndYTb4b4b4) Tff7b72- T79c0ff20Tb4b4b4;
Tff7b72const Te6edf3maxY Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(Te6edf3arrowStartYTb4b4b4, Te6edf3arrowEndYTb4b4b4) Tff7b72+ T79c0ff20Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3arrowSvgWidth Tff7b72= Te6edf3maxX Tff7b72- Te6edf3minXTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3arrowSvgHeight Tff7b72= Te6edf3maxY Tff7b72- Te6edf3minYTb4b4b4;
Tff7b72const Te6edf3adjustedStartX Tff7b72= Te6edf3arrowStartX Tff7b72- Te6edf3minXTb4b4b4;
Tff7b72const Te6edf3adjustedStartY Tff7b72= Te6edf3arrowStartY Tff7b72- Te6edf3minYTb4b4b4;
Tff7b72const Te6edf3adjustedEndX Tff7b72= Te6edf3arrowEndX Tff7b72- Te6edf3minXTb4b4b4;
Tff7b72const Te6edf3adjustedEndY Tff7b72= Te6edf3arrowEndY Tff7b72- Te6edf3minYTb4b4b4;
Tff7b72const Te6edf3controlX1 Tff7b72= Te6edf3adjustedStartX Tff7b72+ Tb4b4b4(Te6edf3adjustedEndX Tff7b72- Te6edf3adjustedStartXTb4b4b4) Tff7b72* T79c0ff0.5Tb4b4b4;
Tff7b72const Te6edf3controlY1 Tff7b72= Te6edf3adjustedStartY Tff7b72+ Tb4b4b4(Te6edf3adjustedEndY Tff7b72- Te6edf3adjustedStartYTb4b4b4) Tff7b72* T79c0ff0.3Tb4b4b4;
Tff7b72const Te6edf3controlX2 Tff7b72= Te6edf3adjustedStartX Tff7b72+ Tb4b4b4(Te6edf3adjustedEndX Tff7b72- Te6edf3adjustedStartXTb4b4b4) Tff7b72* T79c0ff0.7Tb4b4b4;
Tff7b72const Te6edf3controlY2 Tff7b72= Te6edf3adjustedStartY Tff7b72+ Tb4b4b4(Te6edf3adjustedEndY Tff7b72- Te6edf3adjustedStartYTb4b4b4) Tff7b72* T79c0ff0.7Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3arrowPath Tff7b72= Ta5d6ff`Ta5d6ffM Tffd700${Te6edf3adjustedStartXTffd700}Ta5d6ff Tffd700${Te6edf3adjustedStartYTffd700}Ta5d6ff C Tffd700${Te6edf3controlX1Tffd700}Ta5d6ff Tffd700${Te6edf3controlY1Tffd700}Ta5d6ff, Tffd700${Te6edf3controlX2Tffd700}Ta5d6ff Tffd700${Te6edf3controlY2Tffd700}Ta5d6ff, Tffd700${Te6edf3adjustedEndXTffd700}Ta5d6ff Tffd700${Te6edf3adjustedEndYTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3arrowStyle Tff7b72= Tb4b4b4{
Te6edf3leftTff7b72: Ta5d6ff`Tffd700${Te6edf3minXTffd700}Ta5d6ffpxTa5d6ff`Tb4b4b4,
Te6edf3topTff7b72: Ta5d6ff`Tffd700${Te6edf3minYTffd700}Ta5d6ffpxTa5d6ff`Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3dismissOnboardingTooltipTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3showOnboardingTooltip Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3localStorageTb4b4b4.Te6edf3setItemTb4b4b4(Ta5d6ff"map_onboarding_seen"Tb4b4b4, Ta5d6ff"true"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onSearchInputTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchTimeoutTb4b4b4) Tb4b4b4{
Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchTimeoutTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3performSearchTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3searchQuery Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isSearchingTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3defaultNominatimUrl Tff7b72= Ta5d6ff"https://nominatim.openstreetmap.org"Tb4b4b4;
Tff7b72const Te6edf3isCustomLocal Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isLocalUrlTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isDefaultOnline Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isDefaultOnlineUrlTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4, Ta5d6ff"nominatim"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3offlineEnabledTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3isCustomLocal Tff7b72|| Tb4b4b4(Tff7b72!Te6edf3isDefaultOnline Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrl Tff7b72!== Te6edf3defaultNominatimUrlTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isAccessible Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3checkApiConnectionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isAccessibleTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.search_offline_error"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.search_offline_error"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3isSearching Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3searchResults Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3apiUrl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff"/"Tb4b4b4)
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Tff7b72-T79c0ff1Tb4b4b4)
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3nominatimApiUrlTb4b4b4;
Tff7b72const Te6edf3url Tff7b72= Ta5d6ff`Tffd700${Te6edf3apiUrlTffd700}Ta5d6ff/search?format=json&q=Tffd700${Tffa657encodeURIComponentTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchQueryTb4b4b4)Tffd700}Ta5d6ff&limit=10&addressdetails=1Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Te6edf3fetchTb4b4b4(Te6edf3urlTb4b4b4, Tb4b4b4{
Te6edf3headersTff7b72: Tb4b4b4{
Ta5d6ff"User-Agent"Tff7b72: Ta5d6ff"ReticulumMeshChatX/1.0"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3responseTb4b4b4.Te6edf3okTb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff`Ta5d6ffHTTP Tffd700${Te6edf3responseTb4b4b4.Te6edf3statusTffd700}Ta5d6ff: Tffd700${Te6edf3responseTb4b4b4.Te6edf3statusTextTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3data Tff7b72= Tff7b72await Te6edf3responseTb4b4b4.Te6edf3jsonTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3dataTb4b4b4) Tff7b72&& Te6edf3dataTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchResults Tff7b72= Te6edf3dataTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3itemTb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Te6edf3display_nameTff7b72: Te6edf3itemTb4b4b4.Te6edf3display_nameTb4b4b4,
Te6edf3latTff7b72: Tffa657parseFloatTb4b4b4(Te6edf3itemTb4b4b4.Te6edf3latTb4b4b4)Tb4b4b4,
Te6edf3lonTff7b72: Tffa657parseFloatTb4b4b4(Te6edf3itemTb4b4b4.Te6edf3lonTb4b4b4)Tb4b4b4,
Te6edf3typeTff7b72: Te6edf3itemTb4b4b4.Te6edf3type Tff7b72|| Te6edf3itemTb4b4b4.Tff7b72class Tff7b72|| Ta5d6ff""Tb4b4b4,
Te6edf3boundingboxTff7b72: Te6edf3itemTb4b4b4.Te6edf3boundingboxTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.search_no_results"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Search error:"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3eTb4b4b4.Te6edf3messageTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"Failed to fetch"Tb4b4b4) Tff7b72|| Te6edf3eTb4b4b4.Te6edf3messageTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"NetworkError"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.search_connection_error"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.search_error"Tb4b4b4) Tff7b72+ Ta5d6ff": " Tff7b72+ Te6edf3eTb4b4b4.Te6edf3messageTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isSearching Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3selectSearchResultTb4b4b4(Te6edf3resultTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3view Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3center Tff7b72= Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3resultTb4b4b4.Te6edf3lonTb4b4b4, Te6edf3resultTb4b4b4.Te6edf3latTb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3resultTb4b4b4.Te6edf3boundingbox Tff7b72&& Te6edf3resultTb4b4b4.Te6edf3boundingboxTb4b4b4.Te6edf3length Tff7b72=== T79c0ff4Tb4b4b4) Tb4b4b4{
Tff7b72const Tb4b4b4[Te6edf3minLatTb4b4b4, Te6edf3maxLatTb4b4b4, Te6edf3minLonTb4b4b4, Te6edf3maxLonTb4b4b4] Tff7b72= Te6edf3resultTb4b4b4.Te6edf3boundingboxTb4b4b4.Te6edf3mapTb4b4b4(Tffa657parseFloatTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3extent Tff7b72= Tb4b4b4[Tb4b4b4...Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3minLonTb4b4b4, Te6edf3minLatTb4b4b4]Tb4b4b4)Tb4b4b4, Tb4b4b4...Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3maxLonTb4b4b4, Te6edf3maxLatTb4b4b4]Tb4b4b4)Tb4b4b4]Tb4b4b4;
Te6edf3viewTb4b4b4.Te6edf3fitTb4b4b4(Te6edf3extentTb4b4b4, Tb4b4b4{
Te6edf3paddingTff7b72: Tb4b4b4[T79c0ff50Tb4b4b4, T79c0ff50Tb4b4b4, T79c0ff50Tb4b4b4, T79c0ff50Tb4b4b4]Tb4b4b4,
Te6edf3durationTff7b72: T79c0ff500Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3viewTb4b4b4.Te6edf3animateTb4b4b4(Tb4b4b4{
Te6edf3centerTff7b72: Te6edf3centerTb4b4b4,
Te6edf3zoomTff7b72: Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(Te6edf3viewTb4b4b4.Te6edf3getZoomTb4b4b4(Tb4b4b4)Tb4b4b4, T79c0ff15Tb4b4b4)Tb4b4b4,
Te6edf3durationTff7b72: T79c0ff500Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3clearSearchTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3clearSearchTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3searchQuery Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3searchResults Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3searchError Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isSearchFocused Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchTimeoutTb4b4b4) Tb4b4b4{
Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchTimeoutTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3searchTimeout Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3handleClickOutsideTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3searchContainer Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3searchContainerTb4b4b4.Te6edf3containsTb4b4b4(Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isSearchFocused Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3checkScreenSizeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isMobileScreen Tff7b72= Tffa657windowTb4b4b4.Te6edf3innerWidth Tff7b72< T79c0ff640Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3fetchPeersTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/lxmf/conversations"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3peers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3conv Tff7b72of Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3conversationsTb4b4b4) Tb4b4b4{
Te6edf3peersTb4b4b4[Te6edf3convTb4b4b4.Te6edf3destination_hashTb4b4b4] Tff7b72= Te6edf3convTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3peers Tff7b72= Te6edf3peersTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to fetch peers"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3attachDrawPersistenceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3persist Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3saveMapStateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"addfeature"Tb4b4b4, Te6edf3persistTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"removefeature"Tb4b4b4, Te6edf3persistTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"changefeature"Tb4b4b4, Te6edf3persistTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"clear"Tb4b4b4, Te6edf3persistTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3deleteSelectedFeatureTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedFeature Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3clearMeasurementOverlayTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedFeatureTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4.Te6edf3removeFeatureTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedFeatureTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3getFeaturesTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedFeature Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3saveMapStateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
T8b949e// Drawing methods
Te6edf3toggleDrawTb4b4b4(Te6edf3typeTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3drawType Tff7b72=== Te6edf3type Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isDrawingTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3stopDrawingTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3stopDrawingTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isMeasuring Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawType Tff7b72= Te6edf3typeTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3type Tff7b72=== Ta5d6ff"Select"Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3translateTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3translateTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3modifyTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3modifyTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// Disable selection/translation while drawing
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3translateTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3translateTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3modifyTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3modifyTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3draw Tff7b72= Tff7b72new Te6edf3DrawTb4b4b4(Tb4b4b4{
Te6edf3sourceTff7b72: Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4,
Te6edf3typeTff7b72: Te6edf3typeTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"drawstart"Tb4b4b4, Tb4b4b4(Te6edf3evtTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isDrawing Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sketch Tff7b72= Te6edf3evtTb4b4b4.Te6edf3featureTb4b4b4;
T8b949e// For LineString, Polygon, and Circle, show measure tooltip while drawing
Tff7b72if Tb4b4b4(Te6edf3type Tff7b72=== Ta5d6ff"LineString" Tff7b72|| Te6edf3type Tff7b72=== Ta5d6ff"Polygon" Tff7b72|| Te6edf3type Tff7b72=== Ta5d6ff"Circle"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3createMeasureTooltipTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3_drawListener Tff7b72= Tff7b72thisTb4b4b4.Te6edf3sketchTb4b4b4.Te6edf3getGeometryTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"change"Tb4b4b4, Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3geom Tff7b72= Te6edf3eTb4b4b4.Te6edf3targetTb4b4b4;
Tff7b72let Te6edf3outputTb4b4b4;
Tff7b72let Te6edf3tooltipCoordTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3geom Tff7b72instanceof Te6edf3PolygonTb4b4b4) Tb4b4b4{
Te6edf3output Tff7b72= Tff7b72thisTb4b4b4.Te6edf3formatAreaTb4b4b4(Te6edf3geomTb4b4b4)Tb4b4b4;
Te6edf3tooltipCoord Tff7b72= Te6edf3geomTb4b4b4.Te6edf3getInteriorPointTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getCoordinatesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3geom Tff7b72instanceof Te6edf3LineStringTb4b4b4) Tb4b4b4{
Te6edf3output Tff7b72= Tff7b72thisTb4b4b4.Te6edf3formatLengthTb4b4b4(Te6edf3geomTb4b4b4)Tb4b4b4;
Te6edf3tooltipCoord Tff7b72= Te6edf3geomTb4b4b4.Te6edf3getLastCoordinateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3geom Tff7b72instanceof Te6edf3CircleTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3radius Tff7b72= Te6edf3geomTb4b4b4.Te6edf3getRadiusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3center Tff7b72= Te6edf3geomTb4b4b4.Te6edf3getCenterTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Calculate radius distance in projection (sphere-aware)
Tff7b72const Te6edf3edge Tff7b72= Tb4b4b4[Te6edf3centerTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72+ Te6edf3radiusTb4b4b4, Te6edf3centerTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3line Tff7b72= Tff7b72new Te6edf3LineStringTb4b4b4(Tb4b4b4[Te6edf3centerTb4b4b4, Te6edf3edgeTb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3output Tff7b72= Ta5d6ff`Ta5d6ffRadius: Tffd700${Tff7b72thisTb4b4b4.Te6edf3formatLengthTb4b4b4(Te6edf3lineTb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4;
Te6edf3tooltipCoord Tff7b72= Te6edf3edgeTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3outputTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3measureTooltipElementTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3outputTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3measureTooltipTb4b4b4.Te6edf3setPositionTb4b4b4(Te6edf3tooltipCoordTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"drawend"Tb4b4b4, Tb4b4b4(Te6edf3evtTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isDrawing Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3feature Tff7b72= Te6edf3evtTb4b4b4.Te6edf3featureTb4b4b4;
Te6edf3featureTb4b4b4.Te6edf3setTb4b4b4(Ta5d6ff"type"Tb4b4b4, Ta5d6ff"draw"Tb4b4b4)Tb4b4b4; T8b949e// Tag as custom drawing for styling
T8b949e// Clean up sketch listener and tooltips unless it was the Measure tool
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3_drawListenerTb4b4b4) Tb4b4b4{
Te6edf3unByKeyTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3_drawListenerTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3_drawListener Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3sketch Tff7b72= Tff7b72nullTb4b4b4;
T8b949e// Finalize measurement overlay for the drawn feature
Tff7b72thisTb4b4b4.Te6edf3finalizeMeasurementOverlayTb4b4b4(Te6edf3featureTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3cleanupMeasureTooltipTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Re-enable select/translate/modify after drawing
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3translateTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3translateTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3modifyTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3modifyTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawType Tff7b72= Ta5d6ff"Select"Tb4b4b4;
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3saveMapStateTb4b4b4(Tb4b4b4)Tb4b4b4, T79c0ff100Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3addInteractionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3drawTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3startEditingNoteTb4b4b4(Te6edf3featureTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3editingFeature Tff7b72= Te6edf3featureTb4b4b4;
Tff7b72const Te6edf3telemetry Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"telemetry"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3noteText Tff7b72= Te6edf3telemetry Tff7b72? Te6edf3telemetryTb4b4b4.Te6edf3note Tff7b72|| Ta5d6ff"" Tff7b72: Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"note"Tb4b4b4) Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isMobileScreenTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3showNoteModal Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3updateNoteOverlayTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3updateNoteOverlayTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3editingFeature Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3geometry Tff7b72= Tff7b72thisTb4b4b4.Te6edf3editingFeatureTb4b4b4.Te6edf3getGeometryTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3coordTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3geometry Tff7b72instanceof Te6edf3PointTb4b4b4) Tb4b4b4{
Te6edf3coord Tff7b72= Te6edf3geometryTb4b4b4.Te6edf3getCoordinatesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3geometry Tff7b72instanceof Te6edf3LineStringTb4b4b4) Tb4b4b4{
Te6edf3coord Tff7b72= Te6edf3geometryTb4b4b4.Te6edf3getCoordinateAtTb4b4b4(T79c0ff0.5Tb4b4b4)Tb4b4b4; T8b949e// Middle of line
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3geometry Tff7b72instanceof Te6edf3PolygonTb4b4b4) Tb4b4b4{
Te6edf3coord Tff7b72= Te6edf3geometryTb4b4b4.Te6edf3getInteriorPointTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getCoordinatesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3geometry Tff7b72instanceof Te6edf3CircleTb4b4b4) Tb4b4b4{
Te6edf3coord Tff7b72= Te6edf3geometryTb4b4b4.Te6edf3getCenterTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3coord Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getCenterTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3noteOverlayTb4b4b4.Te6edf3setPositionTb4b4b4(Te6edf3coordTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3saveNoteTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3editingFeatureTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3telemetry Tff7b72= Tff7b72thisTb4b4b4.Te6edf3editingFeatureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"telemetry"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3telemetryTb4b4b4) Tb4b4b4{
Te6edf3telemetryTb4b4b4.Te6edf3note Tff7b72= Tff7b72thisTb4b4b4.Te6edf3noteTextTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3editingFeatureTb4b4b4.Te6edf3setTb4b4b4(Ta5d6ff"note"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3noteTextTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3saveMapStateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3closeNoteEditorTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3cancelNoteTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// If it's a new note (no text and just added), we might want to remove it
T8b949e// but for now just close
Tff7b72thisTb4b4b4.Te6edf3closeNoteEditorTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3closeNoteEditorTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3editingFeature Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3noteText Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3showNoteModal Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3noteOverlayTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3noteOverlayTb4b4b4.Te6edf3setPositionTb4b4b4(Tff7b72undefinedTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3deleteNoteTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3editingFeatureTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4.Te6edf3removeFeatureTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3editingFeatureTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3saveMapStateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3closeNoteEditorTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
T8b949e// Measurement helpers
Te6edf3cleanupMeasureTooltipTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3measureTooltipElement Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3measureTooltipElementTb4b4b4.Te6edf3parentNodeTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3measureTooltipElementTb4b4b4.Te6edf3parentNodeTb4b4b4.Te6edf3removeChildTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3measureTooltipElementTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3measureTooltipTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3removeOverlayTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3measureTooltipTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3measureTooltipElement Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3measureTooltip Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3getMeasurementForGeometryTb4b4b4(Te6edf3geomTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3geom Tff7b72instanceof Te6edf3PolygonTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3textTff7b72: Tff7b72thisTb4b4b4.Te6edf3formatAreaTb4b4b4(Te6edf3geomTb4b4b4)Tb4b4b4,
Te6edf3coordTff7b72: Te6edf3geomTb4b4b4.Te6edf3getInteriorPointTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getCoordinatesTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3geom Tff7b72instanceof Te6edf3LineStringTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3textTff7b72: Tff7b72thisTb4b4b4.Te6edf3formatLengthTb4b4b4(Te6edf3geomTb4b4b4)Tb4b4b4,
Te6edf3coordTff7b72: Te6edf3geomTb4b4b4.Te6edf3getLastCoordinateTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3geom Tff7b72instanceof Te6edf3CircleTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3center Tff7b72= Te6edf3geomTb4b4b4.Te6edf3getCenterTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3edge Tff7b72= Tb4b4b4[Te6edf3centerTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72+ Te6edf3geomTb4b4b4.Te6edf3getRadiusTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3centerTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3line Tff7b72= Tff7b72new Te6edf3LineStringTb4b4b4(Tb4b4b4[Te6edf3centerTb4b4b4, Te6edf3edgeTb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72return Tb4b4b4{
Te6edf3textTff7b72: Ta5d6ff`Ta5d6ffRadius: Tffd700${Tff7b72thisTb4b4b4.Te6edf3formatLengthTb4b4b4(Te6edf3lineTb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4,
Te6edf3coordTff7b72: Te6edf3edgeTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3clearMeasurementOverlayTb4b4b4(Te6edf3featureTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3overlay Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"_measureOverlay"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3overlayTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3removeOverlayTb4b4b4(Te6edf3overlayTb4b4b4)Tb4b4b4;
Te6edf3featureTb4b4b4.Te6edf3unsetTb4b4b4(Ta5d6ff"_measureOverlay"Tb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3finalizeMeasurementOverlayTb4b4b4(Te6edf3featureTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3clearMeasurementOverlayTb4b4b4(Te6edf3featureTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3geom Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getGeometryTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3measurement Tff7b72= Tff7b72thisTb4b4b4.Te6edf3getMeasurementForGeometryTb4b4b4(Te6edf3geomTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3measurementTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3el Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"div"Tb4b4b4)Tb4b4b4;
Te6edf3elTb4b4b4.Te6edf3className Tff7b72= Ta5d6ff"ol-tooltip ol-tooltip-static"Tb4b4b4;
Te6edf3elTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3measurementTb4b4b4.Te6edf3textTb4b4b4;
Tff7b72const Te6edf3overlay Tff7b72= Tff7b72new Te6edf3OverlayTb4b4b4(Tb4b4b4{
Te6edf3elementTff7b72: Te6edf3elTb4b4b4,
Te6edf3offsetTff7b72: Tb4b4b4[T79c0ff0Tb4b4b4, Tff7b72-T79c0ff7Tb4b4b4]Tb4b4b4,
Te6edf3positioningTff7b72: Ta5d6ff"bottom-center"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3overlayTb4b4b4.Te6edf3setTb4b4b4(Ta5d6ff"isMeasureTooltip"Tb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3addOverlayTb4b4b4(Te6edf3overlayTb4b4b4)Tb4b4b4;
Te6edf3overlayTb4b4b4.Te6edf3setPositionTb4b4b4(Te6edf3measurementTb4b4b4.Te6edf3coordTb4b4b4)Tb4b4b4;
Te6edf3featureTb4b4b4.Te6edf3setTb4b4b4(Ta5d6ff"_measureOverlay"Tb4b4b4, Te6edf3overlayTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3rebuildMeasurementOverlaysTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3drawSource Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tff7b72returnTb4b4b4;
T8b949e// Remove all existing measure overlays
Tff7b72const Te6edf3overlays Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getOverlaysTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getArrayTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= Te6edf3overlaysTb4b4b4.Te6edf3length Tff7b72- T79c0ff1Tb4b4b4; Te6edf3i Tff7b72>= T79c0ff0Tb4b4b4; Te6edf3iTff7b72--Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3ov Tff7b72= Te6edf3overlaysTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3ovTb4b4b4.Te6edf3get Tff7b72&& Te6edf3ovTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"isMeasureTooltip"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3removeOverlayTb4b4b4(Te6edf3ovTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
T8b949e// Rebuild for all features
Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4.Te6edf3getFeaturesTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3fTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3fTb4b4b4.Te6edf3unsetTb4b4b4(Ta5d6ff"_measureOverlay"Tb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3finalizeMeasurementOverlayTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3serializeFeaturesTb4b4b4(Te6edf3featuresTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3featuresTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3fTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3clone Tff7b72= Te6edf3fTb4b4b4.Te6edf3cloneTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3cloneTb4b4b4.Te6edf3unsetTb4b4b4(Ta5d6ff"_measureOverlay"Tb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4; T8b949e// avoid circular refs
Tff7b72const Te6edf3geom Tff7b72= Te6edf3cloneTb4b4b4.Te6edf3getGeometryTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3geom Tff7b72instanceof Te6edf3CircleTb4b4b4) Tb4b4b4{
Te6edf3cloneTb4b4b4.Te6edf3setGeometryTb4b4b4(Te6edf3fromCircleTb4b4b4(Te6edf3geomTb4b4b4, T79c0ff128Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3cloneTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
T8b949e// Context menu handlers
Te6edf3onContextMenuTb4b4b4(Te6edf3evtTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tff7b72returnTb4b4b4;
Te6edf3evtTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3pixel Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getEventPixelTb4b4b4(Te6edf3evtTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3feature Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3forEachFeatureAtPixelTb4b4b4(Te6edf3pixelTb4b4b4, Tb4b4b4(Te6edf3fTb4b4b4) Tb4b4b4=> Te6edf3fTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3contextMenuFeature Tff7b72= Te6edf3feature Tff7b72|| Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3contextMenuCoord Tff7b72= Te6edf3toLonLatTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getCoordinateFromPixelTb4b4b4(Te6edf3pixelTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3contextMenuPos Tff7b72= Tb4b4b4{ Te6edf3xTff7b72: Te6edf3evtTb4b4b4.Te6edf3clientXTb4b4b4, Te6edf3yTff7b72: Te6edf3evtTb4b4b4.Te6edf3clientY Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3feature Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3getFeaturesTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3getFeaturesTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3pushTb4b4b4(Te6edf3featureTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedFeature Tff7b72= Te6edf3featureTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3showContextMenu Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3closeContextMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3showContextMenu Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3contextSelectFeatureTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3contextMenuFeature Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3select Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3translateTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3translateTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3modifyTff7b72?Tb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3getFeaturesTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3getFeaturesTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3pushTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3contextMenuFeatureTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedFeature Tff7b72= Tff7b72thisTb4b4b4.Te6edf3contextMenuFeatureTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawType Tff7b72= Ta5d6ff"Select"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3contextDeleteFeatureTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3contextMenuFeature Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3contextMenuFeatureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"telemetry"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4.Te6edf3removeFeatureTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3contextMenuFeatureTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3saveMapStateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3contextAddNoteTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3contextMenuFeatureTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3startEditingNoteTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3contextMenuFeatureTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3contextCopyCoordsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3contextMenuCoordTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Tb4b4b4[Te6edf3lonTb4b4b4, Te6edf3latTb4b4b4] Tff7b72= Tff7b72thisTb4b4b4.Te6edf3contextMenuCoordTb4b4b4;
Tff7b72const Te6edf3text Tff7b72= Ta5d6ff`Tffd700${Te6edf3latTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff6Tb4b4b4)Tffd700}Ta5d6ff, Tffd700${Te6edf3lonTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff6Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3navigatorTff7b72?Tb4b4b4.Te6edf3clipboardTff7b72?Tb4b4b4.Te6edf3writeTextTb4b4b4) Tb4b4b4{
Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3writeTextTb4b4b4(Te6edf3textTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"Copied coordinates"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3textTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Copy failed"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3warningTb4b4b4(Te6edf3textTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3contextClearMapTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3clearDrawingsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
T8b949e// Clear all overlays on escape/context close
Te6edf3handleGlobalClickTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3showContextMenuTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3handleMapPointerMoveTb4b4b4(Te6edf3evtTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3lonLat Tff7b72= Te6edf3toLonLatTb4b4b4(Te6edf3evtTb4b4b4.Te6edf3coordinateTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3cursorCoords Tff7b72= Tb4b4b4[Te6edf3lonLatTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Te6edf3lonLatTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3evtTb4b4b4.Te6edf3dragging Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isDrawing Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isMeasuringTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3pixel Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getEventPixelTb4b4b4(Te6edf3evtTb4b4b4.Te6edf3originalEventTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3feature Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3forEachFeatureAtPixelTb4b4b4(Te6edf3pixelTb4b4b4, Tb4b4b4(Te6edf3fTb4b4b4) Tb4b4b4=> Te6edf3fTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3featureTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hasNote Tff7b72= Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"note"Tb4b4b4) Tff7b72|| Tb4b4b4(Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"telemetry"Tb4b4b4) Tff7b72&& Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"telemetry"Tb4b4b4)Tb4b4b4.Te6edf3noteTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3hasNoteTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hoveredFeature Tff7b72= Te6edf3featureTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hoveredFeature Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getTargetElementTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3styleTb4b4b4.Te6edf3cursor Tff7b72= Ta5d6ff"pointer"Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hoveredFeature Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getTargetElementTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3styleTb4b4b4.Te6edf3cursor Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3handleMapClickTb4b4b4(Te6edf3evtTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isDrawing Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isMeasuringTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3pixel Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getEventPixelTb4b4b4(Te6edf3evtTb4b4b4.Te6edf3originalEventTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3feature Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3forEachFeatureAtPixelTb4b4b4(Te6edf3pixelTb4b4b4, Tb4b4b4(Te6edf3fTb4b4b4) Tb4b4b4=> Te6edf3fTb4b4b4, Tb4b4b4{
Te6edf3layerFilterTff7b72: Tb4b4b4(Te6edf3lTb4b4b4) Tb4b4b4=> Te6edf3l Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3drawLayerTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3feature Tff7b72&& Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"type"Tb4b4b4) Tff7b72=== Ta5d6ff"note"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3startEditingNoteTb4b4b4(Te6edf3featureTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3closeNoteEditorTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3stopDrawingTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3drawTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3removeInteractionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3drawTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3draw Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3selectTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3translateTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3translateTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3modifyTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3modifyTb4b4b4.Te6edf3setActiveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawType Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isDrawing Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3stopMeasuringTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3clearDrawingsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3confirmTb4b4b4(Ta5d6ff"Clear all drawings from the map?"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// clear tooltips if any
Tff7b72const Te6edf3overlays Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getOverlaysTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getArrayTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= Te6edf3overlaysTb4b4b4.Te6edf3length Tff7b72- T79c0ff1Tb4b4b4; Te6edf3i Tff7b72>= T79c0ff0Tb4b4b4; Te6edf3iTff7b72--Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3overlay Tff7b72= Te6edf3overlaysTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3overlayTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"isMeasureTooltip"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3removeOverlayTb4b4b4(Te6edf3overlayTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3saveMapStateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
T8b949e// Measurement methods
Te6edf3toggleMeasureTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isMeasuringTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3stopMeasuringTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawType Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3stopDrawingTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isMeasuring Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawType Tff7b72= Ta5d6ff"LineString"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3createMeasureTooltipTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3createHelpTooltipTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3draw Tff7b72= Tff7b72new Te6edf3DrawTb4b4b4(Tb4b4b4{
Te6edf3sourceTff7b72: Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4,
Te6edf3typeTff7b72: Ta5d6ff"LineString"Tb4b4b4,
Te6edf3styleTff7b72: Tff7b72new Te6edf3StyleTb4b4b4(Tb4b4b4{
Te6edf3fillTff7b72: Tff7b72new Te6edf3FillTb4b4b4(Tb4b4b4{
Te6edf3colorTff7b72: Ta5d6ff"rgba(255, 255, 255, 0.2)"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3strokeTff7b72: Tff7b72new Te6edf3StrokeTb4b4b4(Tb4b4b4{
Te6edf3colorTff7b72: Ta5d6ff"rgba(0, 0, 0, 0.5)"Tb4b4b4,
Te6edf3lineDashTff7b72: Tb4b4b4[T79c0ff10Tb4b4b4, T79c0ff10Tb4b4b4]Tb4b4b4,
Te6edf3widthTff7b72: T79c0ff2Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3imageTff7b72: Tff7b72new Te6edf3CircleStyleTb4b4b4(Tb4b4b4{
Te6edf3radiusTff7b72: T79c0ff5Tb4b4b4,
Te6edf3strokeTff7b72: Tff7b72new Te6edf3StrokeTb4b4b4(Tb4b4b4{
Te6edf3colorTff7b72: Ta5d6ff"rgba(0, 0, 0, 0.7)"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3fillTff7b72: Tff7b72new Te6edf3FillTb4b4b4(Tb4b4b4{
Te6edf3colorTff7b72: Ta5d6ff"rgba(255, 255, 255, 0.2)"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3addInteractionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3drawTb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3listenerTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"drawstart"Tb4b4b4, Tb4b4b4(Te6edf3evtTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3sketch Tff7b72= Te6edf3evtTb4b4b4.Te6edf3featureTb4b4b4;
Tff7b72let Te6edf3tooltipCoord Tff7b72= Te6edf3evtTb4b4b4.Te6edf3coordinateTb4b4b4;
Te6edf3listener Tff7b72= Tff7b72thisTb4b4b4.Te6edf3sketchTb4b4b4.Te6edf3getGeometryTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"change"Tb4b4b4, Tb4b4b4(Te6edf3evtTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3geom Tff7b72= Te6edf3evtTb4b4b4.Te6edf3targetTb4b4b4;
Tff7b72let Te6edf3outputTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3geom Tff7b72instanceof Te6edf3PolygonTb4b4b4) Tb4b4b4{
Te6edf3output Tff7b72= Tff7b72thisTb4b4b4.Te6edf3formatAreaTb4b4b4(Te6edf3geomTb4b4b4)Tb4b4b4;
Te6edf3tooltipCoord Tff7b72= Te6edf3geomTb4b4b4.Te6edf3getInteriorPointTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3getCoordinatesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3geom Tff7b72instanceof Te6edf3LineStringTb4b4b4) Tb4b4b4{
Te6edf3output Tff7b72= Tff7b72thisTb4b4b4.Te6edf3formatLengthTb4b4b4(Te6edf3geomTb4b4b4)Tb4b4b4;
Te6edf3tooltipCoord Tff7b72= Te6edf3geomTb4b4b4.Te6edf3getLastCoordinateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3measureTooltipElementTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3outputTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3measureTooltipTb4b4b4.Te6edf3setPositionTb4b4b4(Te6edf3tooltipCoordTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"drawend"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3measureTooltipElementTb4b4b4.Te6edf3className Tff7b72= Ta5d6ff"ol-tooltip ol-tooltip-static"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3measureTooltipTb4b4b4.Te6edf3setOffsetTb4b4b4(Tb4b4b4[T79c0ff0Tb4b4b4, Tff7b72-T79c0ff7Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sketch Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3measureTooltipElement Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3createMeasureTooltipTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3unByKeyTb4b4b4(Te6edf3listenerTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"pointermove"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3pointerMoveHandlerTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3stopMeasuringTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isMeasuring Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3draw Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3removeInteractionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3drawTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3draw Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3unTb4b4b4(Ta5d6ff"pointermove"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3pointerMoveHandlerTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3helpTooltip Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3removeOverlayTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3helpTooltipTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3helpTooltip Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3sketch Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3pointerMoveHandlerTb4b4b4(Te6edf3evtTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3evtTb4b4b4.Te6edf3draggingTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72let Te6edf3helpMsg Tff7b72= Ta5d6ff"Click to start drawing"Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3sketchTb4b4b4) Tb4b4b4{
Te6edf3helpMsg Tff7b72= Ta5d6ff"Click to continue drawing, double-click to finish"Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3helpTooltipElementTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3helpMsgTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3helpTooltipTb4b4b4.Te6edf3setPositionTb4b4b4(Te6edf3evtTb4b4b4.Te6edf3coordinateTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3helpTooltipElementTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3removeTb4b4b4(Ta5d6ff"hidden"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatLengthTb4b4b4(Te6edf3lineTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3length Tff7b72= Te6edf3getLengthTb4b4b4(Te6edf3lineTb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3outputTb4b4b4;
Tff7b72let Te6edf3imperialOutputTb4b4b4;
T8b949e// Metric
Tff7b72if Tb4b4b4(Te6edf3length Tff7b72> T79c0ff100Tb4b4b4) Tb4b4b4{
Te6edf3output Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Tb4b4b4(Te6edf3length Tff7b72/ T79c0ff1000Tb4b4b4) Tff7b72* T79c0ff100Tb4b4b4) Tff7b72/ T79c0ff100 Tff7b72+ Ta5d6ff" km"Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3output Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3length Tff7b72* T79c0ff100Tb4b4b4) Tff7b72/ T79c0ff100 Tff7b72+ Ta5d6ff" m"Tb4b4b4;
Tb4b4b4}
T8b949e// Imperial
Tff7b72const Te6edf3feet Tff7b72= Te6edf3length Tff7b72* T79c0ff3.28084Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3feet Tff7b72> T79c0ff5280Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3miles Tff7b72= Te6edf3length Tff7b72* T79c0ff0.000621371Tb4b4b4;
Te6edf3imperialOutput Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3miles Tff7b72* T79c0ff100Tb4b4b4) Tff7b72/ T79c0ff100 Tff7b72+ Ta5d6ff" mi"Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3imperialOutput Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3feet Tff7b72* T79c0ff100Tb4b4b4) Tff7b72/ T79c0ff100 Tff7b72+ Ta5d6ff" ft"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff`Tffd700${Te6edf3outputTffd700}Ta5d6ff<br/><span class="text-[10px] opacity-80">Tffd700${Te6edf3imperialOutputTffd700}Ta5d6ff</span>Ta5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatAreaTb4b4b4(Te6edf3polygonTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3area Tff7b72= Te6edf3getAreaTb4b4b4(Te6edf3polygonTb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3outputTb4b4b4;
Tff7b72let Te6edf3imperialOutputTb4b4b4;
T8b949e// Metric
Tff7b72if Tb4b4b4(Te6edf3area Tff7b72> T79c0ff10000Tb4b4b4) Tb4b4b4{
Te6edf3output Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Tb4b4b4(Te6edf3area Tff7b72/ T79c0ff1000000Tb4b4b4) Tff7b72* T79c0ff100Tb4b4b4) Tff7b72/ T79c0ff100 Tff7b72+ Ta5d6ff" km²"Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3output Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3area Tff7b72* T79c0ff100Tb4b4b4) Tff7b72/ T79c0ff100 Tff7b72+ Ta5d6ff" m²"Tb4b4b4;
Tb4b4b4}
T8b949e// Imperial
Tff7b72const Te6edf3sqFeet Tff7b72= Te6edf3area Tff7b72* T79c0ff10.7639Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3sqFeet Tff7b72> T79c0ff27878400Tb4b4b4) Tb4b4b4{
T8b949e// > 1 sq mile
Tff7b72const Te6edf3sqMiles Tff7b72= Te6edf3area Tff7b72* T79c0ff0.000000386102Tb4b4b4;
Te6edf3imperialOutput Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3sqMiles Tff7b72* T79c0ff100Tb4b4b4) Tff7b72/ T79c0ff100 Tff7b72+ Ta5d6ff" mi²"Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3imperialOutput Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3sqFeet Tff7b72* T79c0ff100Tb4b4b4) Tff7b72/ T79c0ff100 Tff7b72+ Ta5d6ff" ft²"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff`Tffd700${Te6edf3outputTffd700}Ta5d6ff<br/><span class="text-[10px] opacity-80">Tffd700${Te6edf3imperialOutputTffd700}Ta5d6ff</span>Ta5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3createHelpTooltipTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3helpTooltipElement Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3helpTooltipElementTb4b4b4.Te6edf3parentNodeTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3helpTooltipElementTb4b4b4.Te6edf3parentNodeTb4b4b4.Te6edf3removeChildTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3helpTooltipElementTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3helpTooltipElement Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"div"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3helpTooltipElementTb4b4b4.Te6edf3className Tff7b72= Ta5d6ff"ol-tooltip hidden"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3helpTooltip Tff7b72= Tff7b72new Te6edf3OverlayTb4b4b4(Tb4b4b4{
Te6edf3elementTff7b72: Tff7b72thisTb4b4b4.Te6edf3helpTooltipElementTb4b4b4,
Te6edf3offsetTff7b72: Tb4b4b4[T79c0ff15Tb4b4b4, T79c0ff0Tb4b4b4]Tb4b4b4,
Te6edf3positioningTff7b72: Ta5d6ff"center-left"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3addOverlayTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3helpTooltipTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3createMeasureTooltipTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3measureTooltipElement Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"div"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3measureTooltipElementTb4b4b4.Te6edf3className Tff7b72= Ta5d6ff"ol-tooltip ol-tooltip-measure"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3measureTooltip Tff7b72= Tff7b72new Te6edf3OverlayTb4b4b4(Tb4b4b4{
Te6edf3elementTff7b72: Tff7b72thisTb4b4b4.Te6edf3measureTooltipElementTb4b4b4,
Te6edf3offsetTff7b72: Tb4b4b4[T79c0ff0Tb4b4b4, Tff7b72-T79c0ff15Tb4b4b4]Tb4b4b4,
Te6edf3positioningTff7b72: Ta5d6ff"bottom-center"Tb4b4b4,
Te6edf3stopEventTff7b72: Tff7b72falseTb4b4b4,
Te6edf3insertFirstTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3measureTooltipTb4b4b4.Te6edf3setTb4b4b4(Ta5d6ff"isMeasureTooltip"Tb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3addOverlayTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3measureTooltipTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
T8b949e// Drawing storage methods
Tff7b72async Te6edf3openLoadDrawingModalTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3showLoadDrawingModal Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoadingDrawings Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/map/drawings"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3savedDrawings Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3drawingsTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to load drawings"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoadingDrawings Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3saveDrawingTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3newDrawingNameTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Map not initialized"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3format Tff7b72= Tff7b72new Te6edf3GeoJSONTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3features Tff7b72= Tff7b72thisTb4b4b4.Te6edf3serializeFeaturesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4.Te6edf3getFeaturesTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3json Tff7b72= Te6edf3formatTb4b4b4.Te6edf3writeFeaturesTb4b4b4(Te6edf3featuresTb4b4b4, Tb4b4b4{
Te6edf3dataProjectionTff7b72: Ta5d6ff"EPSG:4326"Tb4b4b4,
Te6edf3featureProjectionTff7b72: Ta5d6ff"EPSG:3857"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/map/drawings"Tb4b4b4, Tb4b4b4{
Te6edf3nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3newDrawingNameTb4b4b4,
Te6edf3dataTff7b72: Te6edf3jsonTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"Drawing saved"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3showSaveDrawingModal Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newDrawingName Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save drawing"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadDrawingTb4b4b4(Te6edf3drawingTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3format Tff7b72= Tff7b72new Te6edf3GeoJSONTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3features Tff7b72= Te6edf3formatTb4b4b4.Te6edf3readFeaturesTb4b4b4(Te6edf3drawingTb4b4b4.Te6edf3dataTb4b4b4, Tb4b4b4{
Te6edf3dataProjectionTff7b72: Ta5d6ff"EPSG:4326"Tb4b4b4,
Te6edf3featureProjectionTff7b72: Ta5d6ff"EPSG:3857"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3drawSourceTb4b4b4.Te6edf3addFeaturesTb4b4b4(Te6edf3featuresTb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3saveMapStateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3showLoadDrawingModal Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff`Ta5d6ffLoaded "Tffd700${Te6edf3drawingTb4b4b4.Te6edf3nameTffd700}Ta5d6ff"Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3deleteDrawingTb4b4b4(Te6edf3drawingTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3confirmTb4b4b4(Ta5d6ff`Ta5d6ffDelete drawing "Tffd700${Te6edf3drawingTb4b4b4.Te6edf3nameTffd700}Ta5d6ff"?Ta5d6ff`Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/map/drawings/Tffd700${Te6edf3drawingTb4b4b4.Te6edf3idTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3savedDrawings Tff7b72= Tff7b72thisTb4b4b4.Te6edf3savedDrawingsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3dTb4b4b4) Tb4b4b4=> Te6edf3dTb4b4b4.Te6edf3id Tff7b72!== Te6edf3drawingTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"Deleted"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to delete"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3goToMyLocationTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// Priority 1: Use telemetry data if available for our own hash
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3config Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3identity_hashTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3myTelemetry Tff7b72= Tff7b72thisTb4b4b4.Te6edf3telemetryListTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3tTb4b4b4) Tb4b4b4=> Te6edf3tTb4b4b4.Te6edf3destination_hash Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3identity_hashTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3myTelemetry Tff7b72&& Te6edf3myTelemetryTb4b4b4.Te6edf3telemetryTff7b72?Tb4b4b4.Te6edf3locationTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3loc Tff7b72= Te6edf3myTelemetryTb4b4b4.Te6edf3telemetryTb4b4b4.Te6edf3locationTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3animateTb4b4b4(Tb4b4b4{
Te6edf3centerTff7b72: Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3locTb4b4b4.Te6edf3longitudeTb4b4b4, Te6edf3locTb4b4b4.Te6edf3latitudeTb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3zoomTff7b72: T79c0ff15Tb4b4b4,
Te6edf3durationTff7b72: T79c0ff1000Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}
T8b949e// Priority 2: Use browser geolocation if online or available
Tff7b72if Tb4b4b4(Te6edf3navigatorTb4b4b4.Te6edf3geolocationTb4b4b4) Tb4b4b4{
Te6edf3navigatorTb4b4b4.Te6edf3geolocationTb4b4b4.Te6edf3getCurrentPositionTb4b4b4(
Tb4b4b4(Te6edf3posTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3mapTb4b4b4.Te6edf3getViewTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3animateTb4b4b4(Tb4b4b4{
Te6edf3centerTff7b72: Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3posTb4b4b4.Te6edf3coordsTb4b4b4.Te6edf3longitudeTb4b4b4, Te6edf3posTb4b4b4.Te6edf3coordsTb4b4b4.Te6edf3latitudeTb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3zoomTff7b72: T79c0ff15Tb4b4b4,
Te6edf3durationTff7b72: T79c0ff1000Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4(Te6edf3errTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Geolocation failed"Tb4b4b4, Te6edf3errTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3warningTb4b4b4(Ta5d6ff"Could not determine your location"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3warningTb4b4b4(Ta5d6ff"Geolocation is not supported by your browser"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3fetchTelemetryMarkersTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/telemetry/peers"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3telemetryList Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3telemetryTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3updateMarkersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to fetch telemetry"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3updateMarkersTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3markerSourceTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3markerSourceTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3t Tff7b72of Tff7b72thisTb4b4b4.Te6edf3telemetryListTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3loc Tff7b72= Te6edf3tTb4b4b4.Te6edf3telemetryTff7b72?Tb4b4b4.Te6edf3locationTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3loc Tff7b72|| Te6edf3locTb4b4b4.Te6edf3latitude Tff7b72=== Tff7b72undefined Tff7b72|| Te6edf3locTb4b4b4.Te6edf3longitude Tff7b72=== Tff7b72undefinedTb4b4b4) Tff7b72continueTb4b4b4;
Tff7b72const Te6edf3feature Tff7b72= Tff7b72new Te6edf3FeatureTb4b4b4(Tb4b4b4{
Te6edf3geometryTff7b72: Tff7b72new Te6edf3PointTb4b4b4(Te6edf3fromLonLatTb4b4b4(Tb4b4b4[Te6edf3locTb4b4b4.Te6edf3longitudeTb4b4b4, Te6edf3locTb4b4b4.Te6edf3latitudeTb4b4b4]Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3telemetryTff7b72: Te6edf3tTb4b4b4,
Te6edf3peerTff7b72: Tff7b72thisTb4b4b4.Te6edf3peersTb4b4b4[Te6edf3tTb4b4b4.Te6edf3destination_hashTb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3markerSourceTb4b4b4.Te6edf3addFeatureTb4b4b4(Te6edf3featureTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3createMarkerStyleTb4b4b4(Tb4b4b4{ Te6edf3iconColorTb4b4b4, Te6edf3bgColorTb4b4b4, Te6edf3labelTb4b4b4, Te6edf3isStaleTb4b4b4, Te6edf3iconPath Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3cacheKey Tff7b72= Ta5d6ff`Tffd700${Te6edf3iconColorTffd700}Ta5d6ff-Tffd700${Te6edf3bgColorTffd700}Ta5d6ff-Tffd700${Te6edf3labelTffd700}Ta5d6ff-Tffd700${Te6edf3isStaleTffd700}Ta5d6ff-Tffd700${Te6edf3iconPath Tff7b72|| Ta5d6ff"default"Tffd700}Ta5d6ff`Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3styleCacheTb4b4b4[Te6edf3cacheKeyTb4b4b4]Tb4b4b4) Tff7b72return Tff7b72thisTb4b4b4.Te6edf3styleCacheTb4b4b4[Te6edf3cacheKeyTb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3markerFill Tff7b72= Te6edf3isStale Tff7b72? Ta5d6ff"#d1d5db" Tff7b72: Te6edf3bgColorTb4b4b4;
Tff7b72const Te6edf3markerStroke Tff7b72= Te6edf3isStale Tff7b72? Ta5d6ff"#9ca3af" Tff7b72: Te6edf3iconColorTb4b4b4;
Tff7b72const Te6edf3path Tff7b72=
Te6edf3iconPath Tff7b72||
Ta5d6ff"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7Zm0 11a2 2 0 1 1 0-4 2 2 0 0 1 0 4Z"Tb4b4b4;
Tff7b72const Te6edf3svg Tff7b72= Ta5d6ff`Ta5d6ff<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="Tffd700${Te6edf3pathTffd700}Ta5d6ff" fill="Tffd700${Te6edf3markerFillTffd700}Ta5d6ff" stroke="Tffd700${Te6edf3markerStrokeTffd700}Ta5d6ff" stroke-width="1.5"/></svg>Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3src Tff7b72= Ta5d6ff"data:image/svg+xml;base64," Tff7b72+ Te6edf3btoaTb4b4b4(Te6edf3unescapeTb4b4b4(Tffa657encodeURIComponentTb4b4b4(Te6edf3svgTb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3style Tff7b72= Tff7b72new Te6edf3StyleTb4b4b4(Tb4b4b4{
Te6edf3imageTff7b72: Tff7b72new Te6edf3IconTb4b4b4(Tb4b4b4{
Te6edf3srcTff7b72: Te6edf3srcTb4b4b4,
Te6edf3anchorTff7b72: Tb4b4b4[T79c0ff0.5Tb4b4b4, T79c0ff1Tb4b4b4]Tb4b4b4,
Te6edf3scaleTff7b72: T79c0ff1.6Tb4b4b4, T8b949e// Reduced from 2.5
Te6edf3imgSizeTff7b72: Tb4b4b4[T79c0ff24Tb4b4b4, T79c0ff24Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3textTff7b72: Tff7b72new Te6edf3TextTb4b4b4(Tb4b4b4{
Te6edf3textTff7b72: Te6edf3labelTb4b4b4,
Te6edf3offsetYTff7b72: Tff7b72-T79c0ff45Tb4b4b4, T8b949e// Adjusted from -60
Te6edf3fontTff7b72: Ta5d6ff"bold 12px sans-serif"Tb4b4b4,
Te6edf3fillTff7b72: Tff7b72new Te6edf3FillTb4b4b4(Tb4b4b4{ Te6edf3colorTff7b72: Te6edf3isStale Tff7b72? Ta5d6ff"#6b7280" Tff7b72: Ta5d6ff"#111827" Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3strokeTff7b72: Tff7b72new Te6edf3StrokeTb4b4b4(Tb4b4b4{ Te6edf3colorTff7b72: Ta5d6ff"#ffffff"Tb4b4b4, Te6edf3widthTff7b72: T79c0ff3 Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3styleCacheTb4b4b4[Te6edf3cacheKeyTb4b4b4] Tff7b72= Te6edf3styleTb4b4b4;
Tff7b72return Te6edf3styleTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onMarkerClickTb4b4b4(Te6edf3featureTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedMarker Tff7b72= Tb4b4b4{
Te6edf3telemetryTff7b72: Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"telemetry"Tb4b4b4)Tb4b4b4,
Te6edf3peerTff7b72: Te6edf3featureTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"peer"Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onWebsocketMessageTb4b4b4(Te6edf3messageTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3json Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3messageTb4b4b4.Te6edf3dataTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"lxmf.telemetry"Tb4b4b4) Tb4b4b4{
T8b949e// Find and update or add to telemetryList
Tff7b72const Te6edf3index Tff7b72= Tff7b72thisTb4b4b4.Te6edf3telemetryListTb4b4b4.Te6edf3findIndexTb4b4b4(Tb4b4b4(Te6edf3tTb4b4b4) Tb4b4b4=> Te6edf3tTb4b4b4.Te6edf3destination_hash Tff7b72=== Te6edf3jsonTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3entry Tff7b72= Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3jsonTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3timestampTff7b72: Te6edf3jsonTb4b4b4.Te6edf3timestampTb4b4b4,
Te6edf3telemetryTff7b72: Te6edf3jsonTb4b4b4.Te6edf3telemetryTb4b4b4,
Te6edf3updated_atTff7b72: Tff7b72new Tffa657DateTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toISOStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3index Tff7b72!== Tff7b72-T79c0ff1Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3telemetryListTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3indexTb4b4b4, T79c0ff1Tb4b4b4, Te6edf3entryTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3telemetryListTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3entryTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3updateMarkersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3formatTimestampTb4b4b4(Te6edf3tsTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72new Tffa657DateTb4b4b4(Te6edf3ts Tff7b72* T79c0ff1000Tb4b4b4)Tb4b4b4.Te6edf3toLocaleStringTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openChatTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"messages"Tb4b4b4,
Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3destinationHashTff7b72: Te6edf3hash Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>
Tb4b4b4<Tff7b72style Te6edf3scopedTb4b4b4>
T8b949e/* Ensure map takes full space */
Tb4b4b4:Tf0883edeepTff7b72(Tb4b4b4.T56d364ol-viewportTff7b72) Tb4b4b4{
Tff7b72border-radiusTb4b4b4: Tff7b72inheritTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364cursor-crosshair Tb4b4b4{
Tff7b72cursorTb4b4b4: Tff7b72crosshair Tff7b72!importantTb4b4b4;
Tb4b4b4}
Tb4b4b4:Tf0883edeepTff7b72(Tb4b4b4.T56d364ol-tooltipTff7b72) Tb4b4b4{
Tff7b72positionTb4b4b4: Tff7b72relativeTb4b4b4;
Tff7b72backgroundTb4b4b4: Tffa657rgbaTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0.7Tb4b4b4)Tb4b4b4;
Tff7b72border-radiusTb4b4b4: T79c0ff4Tffa657pxTb4b4b4;
Tff7b72colorTb4b4b4: Tff7b72whiteTb4b4b4;
Tff7b72paddingTb4b4b4: T79c0ff4Tffa657px T79c0ff8Tffa657pxTb4b4b4;
Tff7b72opacityTb4b4b4: T79c0ff0.7Tb4b4b4;
Tff7b72font-sizeTb4b4b4: T79c0ff12Tffa657pxTb4b4b4;
Tff7b72cursorTb4b4b4: Tff7b72defaultTb4b4b4;
Tff7b72user-selectTb4b4b4: Tff7b72noneTb4b4b4;
Tff7b72text-alignTb4b4b4: Tff7b72centerTb4b4b4;
Tff7b72line-heightTb4b4b4: T79c0ff1.2Tb4b4b4;
Tb4b4b4}
Tb4b4b4:Tf0883edeepTff7b72(Tb4b4b4.T56d364ol-tooltip-measureTff7b72) Tb4b4b4{
Tff7b72opacityTb4b4b4: T79c0ff1Tb4b4b4;
Tff7b72font-weightTb4b4b4: Tff7b72boldTb4b4b4;
Tb4b4b4}
Tb4b4b4:Tf0883edeepTff7b72(Tb4b4b4.T56d364ol-tooltip-staticTff7b72) Tb4b4b4{
Tff7b72background-colorTb4b4b4: T79c0ff#3b82f6Tb4b4b4;
Tff7b72colorTb4b4b4: Tff7b72whiteTb4b4b4;
Tff7b72borderTb4b4b4: T79c0ff1Tffa657px Tff7b72solid Tff7b72whiteTb4b4b4;
Tb4b4b4}
Tb4b4b4:Tf0883edeepTff7b72(Tb4b4b4.T56d364ol-tooltip-measureTb4b4b4:Tf0883ebeforeTff7b72)Tff7b72,
Tb4b4b4:Tf0883edeepTff7b72(Tb4b4b4.T56d364ol-tooltip-staticTb4b4b4:Tf0883ebeforeTff7b72) Tb4b4b4{
Tff7b72border-topTb4b4b4: T79c0ff6Tffa657px Tff7b72solid Tffa657rgbaTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0.7Tb4b4b4)Tb4b4b4;
Tff7b72border-rightTb4b4b4: T79c0ff6Tffa657px Tff7b72solid Tff7b72transparentTb4b4b4;
Tff7b72border-leftTb4b4b4: T79c0ff6Tffa657px Tff7b72solid Tff7b72transparentTb4b4b4;
Tff7b72contentTb4b4b4: Ta5d6ff""Tb4b4b4;
Tff7b72positionTb4b4b4: Tff7b72absoluteTb4b4b4;
Tff7b72bottomTb4b4b4: T79c0ff-6Tffa657pxTb4b4b4;
Tff7b72margin-leftTb4b4b4: T79c0ff-7Tffa657pxTb4b4b4;
Tff7b72leftTb4b4b4: T79c0ff50Tffa657%Tb4b4b4;
Tb4b4b4}
Tb4b4b4:Tf0883edeepTff7b72(Tb4b4b4.T56d364ol-tooltip-staticTb4b4b4:Tf0883ebeforeTff7b72) Tb4b4b4{
Tff7b72border-top-colorTb4b4b4: T79c0ff#3b82f6Tb4b4b4;
Tb4b4b4}
Tb4b4b4@Tff7b72keyframes Tff7b72slide-up Tb4b4b4{
Tff7b72from Tb4b4b4{
Tff7b72transformTb4b4b4: Tffa657translateYTb4b4b4(T79c0ff100Tffa657%Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72to Tb4b4b4{
Tff7b72transformTb4b4b4: Tffa657translateYTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4@Tff7b72keyframes Tff7b72fade-in Tb4b4b4{
Tff7b72from Tb4b4b4{
Tff7b72opacityTb4b4b4: T79c0ff0Tb4b4b4;
Tb4b4b4}
Tff7b72to Tb4b4b4{
Tff7b72opacityTb4b4b4: T79c0ff1Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4.T56d364animate-slide-up Tb4b4b4{
Tff7b72animationTb4b4b4: Te6edf3slide-up T79c0ff0.3Tffa657s Tff7b72ease-outTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364animate-fade-in Tb4b4b4{
Tff7b72animationTb4b4b4: Te6edf3fade-in T79c0ff0.3Tffa657s Tff7b72ease-outTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364fade-enter-activeTff7b72,
Tb4b4b4.T56d364fade-leave-active Tb4b4b4{
Tff7b72transitionTb4b4b4: Tff7b72opacity T79c0ff0.3Tffa657s Tff7b72easeTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364fade-enter-fromTff7b72,
Tb4b4b4.T56d364fade-leave-to Tb4b4b4{
Tff7b72opacityTb4b4b4: T79c0ff0Tb4b4b4;
Tb4b4b4}
Tb4b4b4<Tb4b4b4/Tff7b72styleTb4b4b4>
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────